我@RestController
@RequestMapping("/api/my-resource")
。我有@GetMapping
来提取某个实体。
@GetMapping(value = "/{firstId},{secondId}")
public ResponseEntity<MyResourceDTO> findMyResource(
@PathVariable Long firstId, @PathVariable String secondId) {
//here I have firstId == null and secondId == null
}
如果我将,
替换为/
,一切正常,但要求不是使用其他/
。
我可以确认,我可以输入此方法,但两个@PathVariable
都映射为null。 Spring
是否支持这种映射?我做错了什么?
我希望获得类似于this的内容,但我必须使用Spring
。
修改
我已经看到List
的解决方案,但我不想使用它,因为ID是不同类型的,所以它不是重复的。我正在使用<spring.version>4.3.6.RELEASE</spring.version>
答案 0 :(得分:2)
使用您当前的Spring版本,您可以尝试使用_
作为分隔符,它应该可以正常工作。
我在Spring文档中读过一次,但现在找不到链接,我会在找到它后立即添加。
答案 1 :(得分:1)
给出一个带有此声明的控制器......
@GetMapping(value = "/this/that/find/{firstId},{secondId}")
public ResponseEntity<String> findMyResource(@PathVariable int firstId, @PathVariable String secondId) {
return new ResponseEntity<>(""+ firstId + "-" + secondId, HttpStatus.OK);
}
......这个测试通过了:
@Test
public void testWithCommaDelimitedPathVariables() throws Exception {
MvcResult mvcResult = mockMvc.perform(get("/this/that/find/1,a"))
.andExpect(status().isOk())
.andReturn();
Assert.assertEquals("1-a", mvcResult.getResponse().getContentAsString());
}
因此,声明用@PathVariables映射的&#34; Rest端点用逗号分隔&#34;得到了Spring的支持。
使用Spring 4.3.10.RELEASE