一尘不染

如何在控制器中使用Spring HttpRequest?

spring-mvc

我已经用这种方式设置了测试

@SpringBootTest
@AutoConfigureMockMvc
@RunWith( SpringRunner.class )
public class PublicControllerTest {

    @Autowired
    private MockMvc mvc;

这是我的控制器签名

@GetMapping( produces = MediaTypes.HAL_JSON_VALUE )
ResponseEntity<ResourceSupport> index( final HttpRequest request ) {

现在它似乎正在注入代理值,但是如果您调用request.getURI()例如,它似乎为空。

我正在尝试执行此操作,以便可以将请求传递给UriComponentsBuilder.fromHttpRequest( ),这由linkTo控制器中的先前方法调用,并且它们没有获得代理/空值。

如何获得HttpRequest?(注意:我不希望/不能使用HttpServletRequest通过得很好,但不是正确的界面UriComponentsBuilder


阅读 266

收藏
2020-06-01

共1个答案

一尘不染

所以我可以使用 HttpServletRequest

@GetMapping( produces = MediaTypes.HAL_JSON_VALUE )
ResponseEntity<ResourceSupport> index( final HttpServletRequest request ) {

但是必须包裹起来吗?通过ServletServerHttpRequest获得我想要的界面。

HttpRequest httpRequest = new ServletServerHttpRequest( request )
2020-06-01