请求方法“ PUT”不受支持

maj*_*ali 1 javascript angularjs spring-data-rest spring-boot

我正在使用springboot angularsjs和Restful。

我的休息控制器

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

按钮

$scope.addstructure = function() {
      $http.put('/structure/updatestructure/', $scope.element);
};
Run Code Online (Sandbox Code Playgroud)

但是我遇到了这个问题:

osweb.servlet.PageNotFound:不支持请求方法“ PUT”

Tom*_*cki 5

您已将{ch}变量定义为PathVariable,并将其作为请求正文发送。您映射接受URL的喜欢/structure/updatestructure/abc/structure/updatestructure/efg和值abc,并efg会作为字符串被比通过。在这种情况下,您的映射应如下所示。

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

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

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