【问题标题】:Request method 'PUT' not supported不支持请求方法“PUT”
【发布时间】:2015-06-26 02:55:36
【问题描述】:

我正在使用 springboot angularsjs 和 restful。

我的休息控制器

@RequestMapping(value="/updatestructure/{ch}",method = RequestMethod.PUT)
public @ResponseBody Structurenotification updateStructure(@PathVariable(value="ch") StructureNotificationDto ch) {
    return StructureNotif.update(ch);
}

按钮

$scope.addstructure = function() {
      $http.put('/structure/updatestructure/', $scope.element);
};

但我遇到了这个问题:

o.s.web.servlet.PageNotFound:不支持请求方法“PUT”

【问题讨论】:

  • 我认为这个问题可能与 Java 相关而不是 JavaScript

标签: javascript angularjs spring-boot spring-data-rest


【解决方案1】:

您已将{ch} 变量定义为PathVariable,并将其作为请求正文发送。您的 Mapping 接受像 /structure/updatestructure/abc/structure/updatestructure/efg 这样的 URL,而值 abcefg 将作为字符串传递。在这种情况下,您的映射应如下所示。

@RequestMapping(value="/updatestructure/{ch}",method = RequestMethod.PUT)
public @ResponseBody Structurenotification updateStructure(@PathVariable String ch) {    
}

但是,您实际上将发送 JSON 作为请求正文(假设从您的角度 $http.put(url,data))。 您的映射应如下所示:

@RequestMapping(value="/updatestructure/",method = RequestMethod.PUT)
public @ResponseBody Structurenotification updateStructure(@RequestBody StructureNotificationDto ch) {
    return StructureNotif.update(ch);
}

【讨论】: