如何在@RequestMapping中使用{in value(或path)

时间:2018-04-27 06:56:21

标签: java spring-mvc request-mapping

示例网址是:

  ?

API / V1 /查询的查询= UP {设备=" DEVICE_1"}

其中Device_1是@PathVariable

我用以下方法测试:

@RequestMapping(value="/api/v1/query?query=up{device=\"${device}\"}",
                method = RequestMethod.GET) String 
getLastPosting(@PathVariable("device") String device);

响应:

  

出现意外错误(type = Internal Server Error,   状态= 500)。内容:方法不允许

关于正确格式的任何想法?

1 个答案:

答案 0 :(得分:0)

此网址看起来非常奇怪,这些大括号也会成为网址中的错误来源,需要将其替换为%7B%7D

我认为你最好使用更简单的,例如:

api/v1/query?query=up&device=Device_1

然后以这种方式声明你的控制器:

@RequestMapping(value="/api/v1/query", method = RequestMethod.GET) 
public String getLastPosting(@RequestParam(value="query") String query, 
                             @RequestParam(value="device") String device) {
}

其他选项会将大括号用于Unicode(但我不推荐这些

/api/v1/query=up%7Bdevice="Device_1"%7D

@RequestMapping(value="/api/v1/{query}",method = RequestMethod.GET)
public String getLastPosting2(@PathVariable("query") String query){

  // query is query=up{device="Device_1"}
  // you would need to parse it to extract the device name

}

/api/v1/query=up%7Bdevice="Device_1"%7D

@RequestMapping(value="/api/v1/query",method = RequestMethod.GET)
public String getLastPosting3(@RequestParam("query") String query){

  // query is up{device="Device_1"}
  // you would need to parse it to extract the device name

}