【问题标题】:PageNotFound - Request method 'GET' not supportedPageNotFound - 不支持请求方法“GET”
【发布时间】:2020-08-14 19:57:33
【问题描述】:

我在 VM 中托管我的 spring 应用程序后,从邮递员调用 API 时收到此错误。在本地它有效。但是我的 VM 中的 Get 方法可以正常工作。

[http-nio-8081-exec-4] PageNotFound - 不支持请求方法“GET”

我的控制器方法如下所示:

@RestController
@RequestMapping("/orders/")
public class OrdersController {}

@PostMapping(value = "create", produces = "text/plain")
private String createOrder(@RequestBody POCreationRequest request) throws ParseException {

API 请求永远运行并且没有得到任何响应。我在日志中发现了异常。对这个问题有任何想法吗?

【问题讨论】:

  • 您能否发布请求的 URl 以及响应中的错误。
  • xx.xxx.xxx.xxx:8081/orders/create。我没有得到任何回应。邮递员永远在奔跑。我发现我发布的错误来自我的日志。
  • 问题是您已将您的 URL /orders/create 映射到一个帖子映射。但是您正在请求获取映射。所以你得到了那个错误。请更改您的请求网址。
  • 没有。在邮递员中,我只发出发布请求。
  • 在VM中你使用的是浏览器还是邮递员?

标签: java spring spring-boot rest api


【解决方案1】:
@RestController
@RequestMapping("/orders")
public class OrdersController {

@PostMapping(value = "create", produces = "text/plain")
  private String createOrder(@RequestBody POCreationRequest request) throws ParseException {
System.out.println(request)}
}

你可以试试上面的代码。

【讨论】:

    【解决方案2】:

    您在那里创建了两个网址:

    • url/orders/ -> 接受 get/post/etc...(虽然它没有实现)

    • url/orders/create -> 接受帖子

    【讨论】:

      【解决方案3】:

      您试图在唯一的 POST 端点上发出 GET 请求,因此不会加载页面。您的端点应该是GET 类型。您还可以为GETPOST 请求使用相同的端点,如下所示:

      @RestController
      @RequestMapping("/orders/")
      public class OrdersController {}
      
      @PostMapping(value = "create", produces = "text/plain")
      private String createOrder(@RequestBody POCreationRequest request) throws ParseException {
          //Parse post requests
      }
      
      @GetMapping(value= "create")
      private String servePage() {
          return create; //create is the name of the html view.
      }
      

      现在当转到localhost:8080/orders/create 时,它应该服务于视图。

      您还可以通过以下方式使GET 映射返回一个 JSON 对象:

      @GetMapping(value= "create")
      private String serveJSON() {
          return "{\"hello\": \"world\"}"; //The string is treated as JSON and not as a view.
      }
      

      【讨论】:

      • 获取映射的请求正文??
      • 我希望这个方法是一个 post 方法。我只来自邮递员的发帖请求拨打电话
      • @user1456110 该错误描述您正在尝试向“POST”端点发出“GET”请求。 Request method 'GET' not supported