簡體   English   中英

如何在 Quarkus 的 CDI bean 中獲取請求 HttpHeaders?

[英]How do I get the requests HttpHeaders in a CDI bean in Quarkus?

我想獲得對 select 的原始請求的 AcceptableLanguage header 正確的翻譯語言。

我認為這會起作用:

import javax.ws.rs.core.HttpHeaders;

@ApplicationScoped
public class TranslationService{

   @Context HttpHeaders httpHeaders;
....
}

看起來,我總是得到一個null值。 當我直接在 RestEasy controller 中嘗試@Context字段時,該字段分配有當前的 HttpHeaders object。

我已經嘗試將ContrainerRequestFilter內的 http 標頭保存到@RequestScoped bean,盡管該值似乎再次丟失,直到在我的TranslationService中使用。

我如何在 quarkus 中獲取或提供請求 http 標頭,以便任何 bean 都可以訪問它們?

它實際上確實與ContainerRequestFilter一起工作

我添加了以下過濾器

@Provider
@PreMatching
public class UserInfoProvider implements ContainerRequestFilter {

    private final UserInfo userinfo;

    @Inject
    public UserInfoProvider(UserInfo userinfo) {
        this.userinfo = userinfo;
    }

    @Override
    public void filter(ContainerRequestContext requestContext) {
        List<Locale> acceptableLanguages = requestContext.getAcceptableLanguages();
        userinfo.setAcceptableLanguages(acceptableLanguages);
    }
}

其中 bean UserInfo@RequestScoped

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM