栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Spring MVC 3中指定HTTP“位置”响应标头的首选方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Spring MVC 3中指定HTTP“位置”响应标头的首选方法是什么?

关键是要使用

UriComponentsBuilder
。有几种方法可以获取它的实例

  1. UriComponentsBuilder
    从预先配置
    MvcUriComponentsBuilder
  2. UriComponentsBuilder
    作为方法的参数注入

UriComponentsBuilder
从预先配置
MvcUriComponentsBuilder

通过这种方式,您可以获取

UriComponentsBuilder
已配置为生成
URI
指向带有预定义参数的某些控制器方法的指针。

下面是例如,从的javadoc为

MvcUriComponentsBuilder

例如,给定此控制器:

 @RequestMapping("/people/{id}/addresses") class AddressController {   @RequestMapping("/{country}")   public HttpEntity<Void> getAddressesForCountry(@PathVariable String country) { ... }   @RequestMapping(value="/", method=RequestMethod.POST)   public void addAddress(Address address) { ... } } A UriComponentsBuilder can be created: // Inline style with static import of "MvcUriComponentsBuilder.on" MvcUriComponentsBuilder.fromMethodCall(    on(AddressController.class).getAddressesForCountry("US")).buildAndExpand(1);

有时可能更可取的另一种选择是通过名称指定控制器方法:

UriComponents uriComponents = MvcUriComponentsBuilder.fromMethodName(    AddressController.class, "getAddressesForCountry", "US").buildAndExpand(1);URI nextUri = uriComponents.toUri();

UriComponentsBuilder
作为方法的参数注入

从spring 3.1开始,

Location
可以使用
UriComponentBuilder
参数制作并将其设置为return
ResponseEntity
UriComponentBuilder
了解上下文并使用相对路径进行操作:

@RequestMapping(method = RequestMethod.POST)public ResponseEntity<?> createCustomer(UriComponentsBuilder b) {    UriComponents uriComponents =         b.path("/customers/{id}").buildAndExpand(id);    HttpHeaders headers = new HttpHeaders();    headers.setLocation(uriComponents.toUri());    return new ResponseEntity<Void>(headers, HttpStatus.CREATED);}

从4.1版开始,您可以使其更短

@RequestMapping(method = RequestMethod.POST)public ResponseEntity<?> createCustomer(UriComponentsBuilder b) {    UriComponents uriComponents =         b.path("/customers/{id}").buildAndExpand(id);    return ResponseEntity.created(uriComponents.toUri()).build();}

感谢Dieter Hubau指出这一点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号