我有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请求时发生了,但是其他请求工作正常
感谢答案)
答案 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 进行映射(顺便说一句,这是正确的)。所以,错误。