rest services-以密钥值格式传递参数

时间:2014-11-11 07:33:22

标签: java spring rest

这是我的控制器:

@RestController
@RequestMapping("/warning/data")
public class EarlyWarningDataController {

    @RequestMapping(value = "/get/{soeid}/{gfcid}/{expressioncode}/{fiscalYear}/{timeperiod}", 
                method = RequestMethod.GET)
        public String getEarlyWarningData(@PathVariable("soeid") String soeId,
                @PathVariable("gfcid") String[] gfcId,
                @PathVariable("expressioncode") String expressionCode,
                @PathVariable("fiscalYear") Long fiscalYear,
                @PathVariable("timeperiod") String timePeriod) throws IOException {
        sysout("");
    }

当我点击网址时

htpt://xyz:8080/EarlyWarning/warning/data/get/samplesoeid/1005771621/CAT_TOTAL_REV/2012/Annual 

它工作正常。

但我想发送类似以下内容的网址:

htpt://xyz:8080/EarlyWarning/warning/data/get/soeid=samplesoeid/gfcid=1005771621/expressioncode=CAT_TOTAL_REV/fiscalyear=2012/timeperiod=Annual

我需要对代码进行哪些更改?帮助。

2 个答案:

答案 0 :(得分:1)

您应该将这些参数转换为@RequestParam,而不是@PathVariable@RequestParam是必要的查询参数(在URL中的?之后,除以&,如http://www.example.com?field1=value1&field2=value2&field3=value3..。)。

您可以在此处找到文档:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html

此处讨论了@PathVariable@RequestParam之间的差异:@RequestParam vs @PathVariable

答案 1 :(得分:0)

您应该将键值数据作为查询参数传递,例如:

http://xyz:8080/Earlywarnings/warning?soeid=samplesoeid&gfcid=1005771621&expressioncode=CAT_TOTAL_REV&fiscalyear=2012&timeperiod=Annual

不要在网址中指定方法,它已经知道了。

有关获取参数的更多信息,请查看此答案:

Get Query String Values in Spring MVC Controller