小编use*_*530的帖子

Spring MVC PUT请求返回405方法不允许

我正在使用spring mvc来设置rest api,大多数配置都是通过spring boot项目自动设置的.在前端我使用angularjs和他们的$ http模块向服务器发出ajax请求以获取资源.资源URL在我的控制器类中定义,但只匹配GET URL.我尝试过PUT和POST,但是这些方法不允许返回405方法,而且分别禁止403方法.

我的控制器看起来像这样

@Controller
@RequestMapping("/api/users")
public class UserController {

    @Inject
    UserService svc;

    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public List<User> home() {
        return svc.findAll();
    }

    @RequestMapping(method = RequestMethod.GET, value = "/{id}")
    @ResponseBody
    public User findById(@PathVariable long id){
        return svc.findById(id);
    }

    @RequestMapping(method = RequestMethod.PUT, value="/{id}")
    @ResponseBody
    public User updateUser(@PathVariable long id, @RequestBody User user){
        Assert.isTrue(user.getId().equals(id), "User Id must match Url Id");
        return svc.updateUser(id, user);
    }

}
Run Code Online (Sandbox Code Playgroud)

并且与服务器的请求不匹配的URL看起来像这样

$http({
            url: BASE_API + 'users/' + user.id,
            method: 'PUT',
            data:user
        })
Run Code Online (Sandbox Code Playgroud)

这会产生对localhost:8080/api/users/1的PUT请求,服务器会响应405 …

java spring spring-mvc spring-boot

8
推荐指数
2
解决办法
3万
查看次数

标签 统计

java ×1

spring ×1

spring-boot ×1

spring-mvc ×1