Env*_*vin 1 java rest spring spring-mvc
我将使用一个非常基本的hello world端点作为示例
@RequestMapping("/hello")
public String hello(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "helloworld";
}
Run Code Online (Sandbox Code Playgroud)
如果我有这个端点,我希望能够转到/ hello并检索helloworld视图.
/hello如果我传入一个像内容类型这样的特定请求参数,我是否可以使用SAME 路径将模型检索为json?
我不确定我明白你的意思.
如果您的意思是希望能够发送请求/hello并获得两个不同的响应,具有不同的内容类型,是的,您可以这样做.
@RequestMapping 将方法标识为请求处理程序,但它还提供了限制何时应使用处理程序的选项.
在这种情况下,您应该Accept在HTTP请求中使用标头,并将其设置application/json为包含JSON text/html的响应和包含HTML的响应.
然后你可以有两种@RequestMapping方法
@RequestMapping(value = "/hello", produces = "application/json")
public SomeType handleJson() {...}
@RequestMapping(value = "/hello", produces = "text/html")
public String handleHtml() {...}
Run Code Online (Sandbox Code Playgroud)
Spring将根据请求的Accept标头和方法的produces值确定使用哪种方法.
小智 6
您可以尝试使用RequestMapping params选项传入参数。这确实需要修改 URL,但映射仍然相同,并且可以添加没有 params 标记的映射方法作为默认值。
@RequestMapping(value="/hello" params= param1)
public returnType method(@RequestParam("param1") p) { ... }
@RequestMapping(value="/hello" params= param2)
public differentreturnType method2(@RequestParam("param2") p) { ... }
Run Code Online (Sandbox Code Playgroud)
所以要处理第一个,请求 URL :http://etc.com/hello?param1=x和第二个http://etc.com/hello?param2=y。
@RequestMapping文档的参数部分:http : //docs.spring.io/spring/docs/4.0.5.RELEASE/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#params--
| 归档时间: |
|
| 查看次数: |
6065 次 |
| 最近记录: |