1) Проверьте вручную
Вы можете ввести HttpServletRequest и che ck заголовки.
@RestController
public class HomeController {
public ResponseEntity<String> test(HttpServletRequest request){
if(request.getHeader("apiKeyHeader") == null){
return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
}
return new ResponseEntity<String>(HttpStatus.OK);
}
}
2) Вводить заголовке
@RequestMapping(value = "/test", method = RequestMethod.POST)
public ResponseEntity<String> test(@RequestHeader(value="myheader") String myheader){
return new ResponseEntity<String>(HttpStatus.OK);
}
, который будет возвращать:
{
"timestamp": 1469805110889,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.ServletRequestBindingException",
"message": "Missing request header 'myheader' for method parameter of type String",
"path": "/test"
}
если заголовок отсутствует.
3) Используйте фильтр
Вы можете автоматизировать проверку с помощью какой-то фильтр, если вы хотите использовать его на нескольких методах. В вашем настраиваемом фильтре просто получите заголовок (как в методе 1), и если заголовок отсутствует, просто ответьте 400 или что угодно. Для меня это имеет смысл, когда вы не используете значение заголовка в методе контроллера и только нужно проверить, что он присутствует.
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(apiHeaderFilter());
registration.addUrlPatterns("/example/*");
registration.setName("apiHeaderFilter");
registration.setOrder(1);
return registration;
}
@Bean(name = "ApiHeaderFilter")
public Filter apiHeaderFilter() {
return new ApiHeaderFilter();
}
Пропустить Запросить
Если вы используете атрибут заголовки в @RequestMapping
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"})
это приведет к 404, если там нет никакого другого обработчика принять запрос.
@RequestHeader (значение = "X-API-Key", required = true) @Valid @Pattern (regexp = SEGMENTS_REGEX) String apiKeyHeader Не могли бы вы сообщить мне, что вышеуказанная линия работает для вас? – Lathy