小编Fre*_*ntz的帖子

Feign 客户端 GET 请求,从微服务抛出“不允许方法:不支持请求方法‘POST’”

我有一个带有 spring 后端的 Vue.js 应用程序,它通过 Feign 客户端调用“订单”微服务。我有许多使用 @PathVariable(s) 工作正常的 GET 请求,但我有 1 个 GET 请求,它可以传递任意数量的不同 URL 参数,并定义了一个 OrderListItemParameters 类并将其添加到 GET 请求中,将参数传递给微服务。我可以看到请求正在发送到微服务,但它被拒绝,并出现“org.zalando.problem.spring.common.AdviceTrait:方法不允许:请求方法'POST'不支持”错误。

我已确保假客户端发送的 OrderListItemParameters 与微服务预期的 OrderListItemParameters 相匹配。无论是 Feign 客户端还是微服务中都没有提及 POST。我只有 GET 和 PUT 端点。

前端代码的 Java 后端:

@RestController
@RequestMapping("/api")
public class OrdersResource {

    ## THIS WORKS NO PROBLEM
    @GetMapping("/order/{orderId}")
    public @ResponseBody
    ResponseEntity<?> order(@PathVariable int orderId) throws Exception {
        return ResponseEntity.ok(orderClient.order(orderId));
    }


    ## THIS ENDPOINT IS THE ONE THAT FAILS
    @GetMapping("/order/list")
    public @ResponseBody
    ResponseEntity<?> orders(OrderListItemParameters orderListItemParams) {
        return ResponseEntity
           .ok(orderClient.getOrderList(orderListItemParams));
    }
} …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc spring-boot microservices feign

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

feign ×1

java ×1

microservices ×1

spring-boot ×1

spring-mvc ×1