所以我必须制作一个CRUD应用程序,当在postman上运行时,显示的错误是405,Method not allowed。在尝试"spring.mvc.hiddenmethod.filter。启用:true"在应用程序中。当使用postman.
进行测试时,代码仍然显示相同的错误。这是控制器
@RestController
@RequestMapping("/employees")
public class EmpController {
@Autowired
private EmpService empService;
@Autowired
private EmpRepository empRepo;
@GetMapping("")
public List<Employee> getAllEmployees()
{
return empService.getAllEmployees();
}
@PostMapping("")
public void addEmployee(@RequestBody Employee emp)
{
empService.addEmployee(emp);
}
@PutMapping("/{id}")
public void updateEmployee(@PathVariable String id,@RequestBody Employee emp)
{
empService.updateEmployee(id,emp);
}
@DeleteMapping(path="/{id}")
public void deleteEmployee(@PathVariable String id) {
System.out.println("Delete function");
empService.deleteEmployee(id);
}
}
这是服务
@org.springframework.stereotype.Service
public class EmpService {
@Autowired
public EmpRepository empRepo;
public List<Employee> getAllEmployees(){
List<Employee> employees = new ArrayList<>();
empRepo.findAll().forEach(employees::add);
return employees;
}
public void addEmployee(Employee emp) {
empRepo.save(emp);
}
public void updateEmployee(String id, Employee emp) {
empRepo.save(emp);
}
public void deleteEmployee(String id) {
empRepo.deleteById(id);
}
}
在尝试其他put post和get方法时,代码工作得很好。但这是我发现405错误的唯一地方。
试试这个
@DeleteMapping(path="/{id}")
public void deleteEmployee(@PathVariable("id") String id) {
System.out.println("Delete function");
empService.deleteEmployee(id);
}
你能把你的请求URL放在这里吗?也许你用错了网址。正确的URL应该是:
http://{host}:{port}/employees/1
1为要删除的id。