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

How can I use a Spring HttpRequest in my controller?

我已经这样设置了我的测试

@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(),好像是null。

我正在尝试这样做,以便我可以将请求传递给 UriComponentsBuilder.fromHttpRequest( ),它由我的控制器中以前的 linkTo 方法调用,但它们没有得到 proxy/null .

如何获取HttpRequest? (注意:我不 want/can 不使用 HttpServletRequest 可以正常通过但不是 UriComponentsBuilder

的正确接口

所以我可以使用 HttpServletRequest

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

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

HttpRequest httpRequest = new ServletServerHttpRequest( request )