Как я могу добавить проверки для конечной точки отдыха весенней загрузки с параметром строки?
Как проверить конечную точку отдыха при загрузке с помощью параметра String, вот пример моей конечной точки.
@ResponseBody
@RequestMapping(value = "/getProfile", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> getProfile(@RequestBody @Valid @NotEmpty String profileId){}
даже думал, что я добавил @valid
а также @NonEmpty
ограничение его не подтверждается.
но это работает для других классов. например,
@ResponseBody
@RequestMapping(value = "/saveProfiles", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> saveProfiles(@RequestBody @Valid PersistProfilesRequest request){}
здесь все поля в классе PersistProfilesRequest, к которым применено ограничение, проверяются правильно.
проверка не происходит для параметра метода с классом Java, таким как String и Map.
я использую spring boot 1.3.0
с валидатором гибернации.
Как я могу добавить проверку конечной точки отдыха с параметром строки?
РЕДАКТИРОВАТЬ
я использую junit и mockmvc для проверки конечной точки, ниже приведен тест
@Test
public void testGetProfile() throws Exception{
String profileId = " ";
this.mockMvc.perform(post("/getProfile").content(profileId).accept(MediaType.APPLICATION_JSON).contentType("application/json"))
.andDo(print())
.andExpect(status().isInternalServerError());
}
2 ответа
Вы можете попытаться аннотировать ваш класс контроллера с помощью @Validated. В моем случае это помогло.
@Validated
@RestController
@RequestMapping(path = "/api/somethin")
public class LegacyRestController {
Весна имеет HttpMessageConverters
и некоторые реализации, такие как:
MappingJackson2HttpConverter
Jaxb2RootElementHttpMessageConverter
StringHttpMessageConverter
и т.п.
Кажется, что если вы отправляете строку и StringHttpMessageConverter
преобразует ваш тип StringHttpMessageConverter:
MappingJackson2HttpMessageConverter
Ответственный за MediaType.APPLICATION_JSON
но StringHttpMessageConverter
получает все типы
Как я вижу StringHttpMessageConverter
конвертирует @RequestBody
Строка...
Струнный класс не попал ни под капот javax.validation
аннотации
Вот почему я думаю, что это не работает
Вам нужно обернуть вашу строку каким-нибудь объектом, например:
public class StringValue{
@NotEmpty
private String field;
//getters and setters
}
public ResponseEntity<Object> getProfile(@RequestBody @Valid StringValue profileId)