仅不支持“删除”请求方法

时间:2020-04-30 07:07:01

标签: java mysql spring-boot rest crud

我有Java控制器:

@RequestMapping("tep")
public class TepController {

    private final TepRepo repo;

    @Autowired
    public TepController(TepRepo repo) {
        this.repo = repo;
    }

    @GetMapping
    public List<Tep> list(){
        return  repo.findAll();
    }
    @PostMapping
    public Tep create(@RequestBody Tep tep){
        return  repo.save(tep);
    }
    @GetMapping("{id}")
    public Tep getOne(@PathVariable("id") Tep tep){
        return tep;
    }

    @PutMapping("{id}")
    public Tep sent(@PathVariable("id") Tep tepFromDb,
                    @RequestBody Tep tep){
        BeanUtils.copyProperties(tep, tepFromDb, "id");
        return repo.save(tepFromDb);
    }
    @DeleteMapping("/{id}")
    public void delete(@PathVariable("id") Tep tep){
        repo.delete(tep);
    }
}

并遇到以下问题: WARN 14068 --- [nio-8080-exec-3] .wsmsDefaultHandlerExceptionResolver:已解决[org.springframework.web.HttpRequestMethodNotSupportedException:请求方法'DELETE'不支持] < / strong> 当我发送DELETE请求时发生了,但是其他请求工作正常

感谢答案)

3 个答案:

答案 0 :(得分:0)

我同意贝里(Beri)的评论,认为这实际上应该是原始类型,最好是int / string,因为我不确定spring boot如何处理DELETE具有主体。没什么可说的,您不能在DELETE中有主体,但是某些实现要求没有主体。

答案 1 :(得分:0)

@DeleteMapping("/{id}")

您的映射包含其他http方法中不存在的“ /”。请分享您要测试的Http请求网址。

答案 2 :(得分:0)

如果你有 application.properties 文件,请将此行添加到您的 application.properties 文件中,否则在资源下创建此文件并写入此行

spring.mvc.hiddenmethod.filter.enabled: 真

基本上,处理 _method 请求参数的过滤器现在默认禁用!所以,即使是 DELETE 也是作为 POST 发送的!并且您的控制器必须仅针对 DELETE 进行映射(顺便说一句,这是正确的)。所以,错误。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes#httphiddenmethodfilter-disabled-by-default