我正在尝试将数据保存到我的Postgres数据库中。这应该在方法上使用PostMapping批注,以便它相应地发送对象。但是,由于某种原因,它期望使用“ GET”方法。任何想法以及其他想法是否也遇到了类似的问题。我也无法调试该方法。
Inventory.java
@RestController
public class InventoryController {
@Autowired
private InventoryService inventoryService;
@RequestMapping(value="/add", method=RequestMethod.POST)
public Inventory addItem(@RequestBody(required = false) Inventory item) {
System.out.print("This is a test");
return inventoryService.save(item);
}
@GetMapping(path="/test")
@ResponseBody
public String testMethod() {
return "Method works!";
}
}
Stacktrace
出现意外错误(类型=不允许使用方法,状态= 405)。请求方法“ GET”不受支持org.springframework.web.HttpRequestMethodNotSupportedException:请求方法“ GET”不受支持org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:201)在org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:421)在org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:367)在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getHandlerInternal(RequestMappingHandlerMapping.java:449)在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getHandlerInternal(RequestMappingHandlerMapping.java:67)在org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:393)
我已经在“ addItem”方法上尝试了以下注释,但仍返回上述跟踪。
我正在运行Spring Boot 2.2.0.RELEASE
您不需要添加@ResponseBody,因为@RestController是@Controller和@ResponseBody的组合。在将API端点移交给Frontend或移动团队之前,也请尝试使用类似PostMan工具的代码。
示例:
@RestController
@RequestMapping(value = "/users")
public class UserController {
...
...
@GetMapping
@PreAuthorize("hasRole('ADMIN')")
public List<User> getAllUsers() {
return userService.getAllUsers();
}
}
[有时,如果我们通过ID获取任何特定的资源,那么我们应该检查资源是否为null,而不是返回空白对象或标准NOT_FOUND错误,我们可以使用从ResponseEntityExceptionHandler扩展的@RestControllerAdvice覆盖该错误,在该错误中,我们可以在控制器级别扩展所有错误。
但是如果资源服务器中出现错误,那么在这种情况下,我们必须在websecurity configure中添加入口点->覆盖http安全方法,并添加自定义入口点以及失败和成功处理程序。