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

时间:2016-09-09 05:02:50

标签: java spring spring-mvc spring-mvc-test

我以这种方式设置我的测试

@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方法调用的,并且它们没有获得代理/ null。

我如何获得HttpRequest? (注意:我不希望/不能使用HttpServletRequest哪个被传递正常但不是UriComponentsBuilder

的正确界面

1 个答案:

答案 0 :(得分:1)

所以我可以使用HttpServletRequest

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

但它必须被包裹?通过ServletServerHttpRequest获取我想要的界面。

HttpRequest httpRequest = new ServletServerHttpRequest( request )