Как добавить список языковых стандартов из заголовка "accept-language" с помощью JAX-RS? - PullRequest
0 голосов
/ 04 января 2019

Я определил конечную точку с помощью JAX-RS (RestEasy) и хотел бы добавить список локалей, предоставленный параметром заголовка "accept-language".

Пример заголовка запроса:

Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,de;q=0.7

В этом коде список содержит только первый языковой стандарт, указанный в заголовке запроса на отправку, но не полный список.

import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;

@GET
@Path("/test")
public void getHeaderLanguages(@HeaderParam("accept-language") List<Locale> locales) {
    //output 1 Locale: en_GB,EN
    locales.forEach(System.out::println); 
}

Этот код печатает весь список языков (как требуется), но API немного неуклюже.

@GET
@Path("/test")
public void getHeaderLanguages(@Context HttpServletRequest request) {
    Enumeration<Locale> localesEnumeration = request.getLocales();
    while(localesEnumeration.hasMoreElements()) {
        //prints all 4 locales as expected en_GB. en. en_US. de
        System.out.print(localesEnumeration.nextElement() + ". "); 
    }
}

Есть ли способ добавить Список всех локалей, отправленных в заголовок запроса "accept-language" с простым синтаксисом, близким к первому подходу, но с полным результатом, как во втором примере?

1 Ответ

0 голосов
/ 11 января 2019

Я еще не нашел идеального решения.

В настоящее время я хожу с инъекцией HttpHeaders. Это дает мне доступ к требуемому списку языков, но не дает мне доступ ко всему HttpServletRequest.

@GET
public void getLanguages(@Context HttpHeaders headers) {
    List<Locale> acceptableLanguages = headers.getAcceptableLanguages();
    // ...
}

Все еще открыт для лучшего решения.

...