1) Überprüfen Sie manuell
Sie können die HttpServletRequest und che injizieren Zieh die Header an.
@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) Injizieren Sie den Kopf
@RequestMapping(value = "/test", method = RequestMethod.POST)
public ResponseEntity<String> test(@RequestHeader(value="myheader") String myheader){
return new ResponseEntity<String>(HttpStatus.OK);
}
Das zurückkehren wird:
{
"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"
}
wenn der Header fehlt.
3) Verwenden Sie Filter
Sie können die Prüfung mit einigen Filter automatisieren, wenn Sie es auf mehreren Methoden verwenden möchten. In Ihrem benutzerdefinierten Filter erhalten Sie einfach den Header (wie in Methode 1) und wenn der Header fehlt, antworten Sie einfach mit 400 oder was auch immer Sie wollen. Für mich ist das sinnvoll, wenn Sie den Header-Wert in der Controller-Methode nicht verwenden und nur validieren müssen, dass er vorhanden ist.
@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();
}
die Anfrage
überspringen Wenn Sie Header in @RequestMapping Attribut verwenden
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"})
diese in 404 zur Folge haben wird, wenn es keinen anderen Handler ist die Anforderung zu nehmen.
@RequestHeader (Wert = "X-API-Key", erforderlich = wahr) @Valid @Pattern (regexp = SEGMENTS_REGEX) String apiKeyHeader Können Sie mir bitte mitteilen, ob die obige Zeile für Sie funktioniert? – Lathy