【问题标题】:Request Method not Suported @PathVariable in @RestController in SpringSpring中@RestController中的@PathVariable不支持请求方法
【发布时间】:2017-06-19 19:07:06
【问题描述】:

我有一个RestController,现在我用@PathVariable写了一个DELETE方法:

@RestController("/msisdns")
public class MsisdnsController {
    @DeleteMapping("/{msisdnToUnReserve}")
    public String unreserveMsisdin(@PathVariable String msisdnToUnReserve) { ... }
}

Bult 总是遇到同样的错误...:

我试过了:

@DeleteMapping("/{msisdnToUnReserve}")
public String unreserveMsisdin(@PathVariable("msisdnToUnReserve") String msisdnToUnReserve)

@RequestMapping(value = "/{msisdnToUnReserve}", method = RequestMethod.DELETE)
public String unreserveMsisdin(@PathVariable("msisdnToUnReserve") String msisdnToUnReserve)

还有更多但总是同样的错误,我无法找到方法

有什么帮助吗?

这是我的Zuul.yml,trnslato URI应该怎么做?

PD:/trasnlator 在 Zuul 中使用 Spring Cloud Netflix 进行配置。

【问题讨论】:

  • 请发布 Zuul 路线..
  • 不是 Zuul 问题,因为它适用于 @RestController("/msisdns") public class MsisdnsController { @DeleteMapping public String unreserveMsisdin(@RequestParam(name = "msisdn_to_unreserve") String msisdnToUnReserve) { ... } }
  • @MiguelCarrasco,可能仍然是 zuul 路由问题,因为两者在技术上是不同的路由(即使它们可以设置为路由到相同的位置)。
  • 您的 Zuul 部署在端口号 8089 上,您访问的 url 显示为 8090 。我不明白 zuul 是如何在这里引起问题的。

标签: spring-mvc spring-boot spring-cloud netflix-zuul spring-cloud-netflix


【解决方案1】:

当我没有指定 producesconsumes 时,我遇到了类似的问题。你可以试试看能否解决问题。选择正确的类型(在我的示例中为 JSON):

@DeleteMapping(value = "/{msisdnToUnReserve}", produces = org.springframework.http.MediaType#APPLICATION_JSON_VALUE)

【讨论】:

    【解决方案2】:

    使用@RequestParam 而不是@PathVariable 会起作用

    您的 URL 将是这样的:localhost:8080/msisdn?id="whatever your id"

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 2015-05-28
      • 2014-06-10
      相关资源
      最近更新 更多