PostMapping错误要求GetMapping

问题描述 投票:0回答:1

我正在尝试将数据保存到我的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”方法上尝试了以下注释,但仍返回上述跟踪。

  1. @@ RequestMapping(value =“ / add”,method = RequestMethod.POST)
  2. @@ Mapping(path =“ / add”)

我正在运行Spring Boot 2.2.0.RELEASE

spring-boot annotations http-post
1个回答
0
投票

您不需要添加@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安全方法,并添加自定义入口点以及失败和成功处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.