Spring Boot Rest - Как принять несколько заголовков - PullRequest
1 голос
/ 13 января 2020

Я использую Spring Boot V2.2.2.RELEASE и выполняю управление версиями API с использованием пользовательских заголовков. Я разработал маленькую конечную точку, как это:

@GetMapping(value = "/student/header", headers = {"X-API-VERSION=2", "X-API-VERSION=1"})
public StudentV1 headerV2() {
    return new StudentV1("Bob Charlie");
} 

Когда я нажимаю curl -X GET http://localhost:8080/student/header -H 'x-api-version: 1', я получаю ошибку.

{
    "timestamp": "2020-01-13T09:20:20.087+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/student/header"
}

Если я использовал headers = {"X-API-VERSION=2"}, то это работает, но если Я использовал headers = {"X-API-VERSION=2", "X-API-VERSION=1"}, тогда все перестало работать.

@GetMapping(value = "/student/header", headers = {"X-API-VERSION=2"})
public StudentV1 headerV2() {
  return new StudentV1("Bob Charlie");
}

1 Ответ

1 голос
/ 13 января 2020

с использованием headers = {"X-API-VERSION=2", "X-API-VERSION=1"} должны присутствовать оба заголовка.

Попробуйте использовать одно сопоставление для каждого заголовка, а затем перенаправить на ваш сервис импл.

@GetMapping(value = "/student/header", headers = {"X-API-VERSION=1"})
public StudentV1 headerV1() {
    return serviceImpl.headerV1();
}

@GetMapping(value = "/student/header", headers = {"X-API-VERSION=2"})
public StudentV1 headerV2() {
    return serviceImpl.headerV2();
}
...