使用@RequestParam还是@PathVariable?

时间:2014-06-25 13:42:45

标签: java spring spring-mvc

我正在使用spring框架开发REST WebApp,现在我想知道接收数据的最佳实践。最好使用@RequestParam@PathVariable检索它们?显然,我有兴趣接收useridusername这样的简单数据。 举个例子:

@RequestMapping(value = "/getdata", method = RequestMethod.GET)
public String GetData(@RequestParam(value = "memberId", required = true) Integer memberId){
  //return data for user with Id = memberid;
}

@RequestMapping(value = "/getdata/{memberid}", method = RequestMethod.GET)
public String GetData(@pathvariable int memberid){
  //return data for user with Id = memberid;
}

我对REST网络服务很感兴趣

4 个答案:

答案 0 :(得分:1)

Rest约定是使用uri变量:

get http://stackoverflow.com/users/3630157

答案 1 :(得分:0)

@PathVarible用于RESTful Web服务。了解什么是REST。方法名称应以小写字母开头。

答案 2 :(得分:0)

这取决于您希望在Controller中接收哪种数据。

您可以使用@PathVariable从uri获取信息。

地址:

exampleUrl/Application/example/someData

控制器:

@RequestMapping(value="example/{someData}", method = RequestMethod.GET)
public String Controller(@PathVariable("someData") String someData){        
  ...
}

您可以使用@RequestParam从网址获取参数。

地址:

exampleUrl/Application/example/someData?parameter1=hello

控制器:

@RequestMapping(value = "example/someData", method = RequestMethod.GET)
public String Controller(@RequestParam(value = "parameter1", required = false) String parameter1){        
          ...
        }

所以没有“更好”的方式,这取决于你想要如何处理你的请求以及你需要什么样的信息。

答案 3 :(得分:0)

创建模型图并将参数名称/值对添加到其中:

@RequestMapping(value="/student/{username}/", method=RequestMethod.GET)

public String adminStudent(@PathVariable String username, @RequestParam String studentid, Model model)
{
    model.put("username", username);
    model.put("studentid", studentid);
    return "student";
}