我有一个带有restful endpoint / widget / {id}的Web应用程序。
此端点采用更新DTO并调用服务层来执行更新。
我目前从JSON主体中提取更新的数据。但是,该服务需要的数据比JSON正文包含的数据多,例如当前用户和URL中的id。
目前我的控制器方法看起来像
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public WidgetResponseDto update(@RequestBody WidgetUpdateDto widgetUpdate,
@PathVariable("id") Long id,
@CurrentOrganisationId Long organisationId)
并且控制器的第一项工作是将这些数据转换为单个对象。然后在整个应用程序中重复此模式。
我的问题是:如何从路径中获取参数,或者从SecurityContext
获取参数并直接在我的DTO中使用它。
理想情况下,我希望能够在我的业务对象中使用SPEL来填充这些字段以及使用Jackson填充其他字段。
这是否支持开箱即用?如果不是,我最好写一个自定义HttpMessageConverter
?
答案 0 :(得分:0)
您可以通过@RequestHeader
注释访问请求标头:
RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public WidgetResponseDto update(@RequestBody WidgetUpdateDto widgetUpdate,
@PathVariable("id") Long id,
@CurrentOrganisationId Long organisationId,
@RequestHeader("Host") String host,
@RequestHeader(""Keep-Alive"") String keepAlive)
请求标头"主机"和#34; Keep-Alive"将分别通过host
和keepAlive
变量提供。
有关详细信息,请参阅API