【问题标题】:How do I support localization with Jersey?我如何支持使用 Jersey 进行本地化?
【发布时间】:2013-04-20 23:28:15
【问题描述】:

我正在设计一个 REST API,我希望将来可以本地化。

因此,我将 URL 定义为格式

/en/<resource_url>

希望能够支持

/fr/<resource_url>

如果需要,将来会。

但是我只想定义每个资源 url 服务一次。因此,我认为在与服务匹配之前,我需要在没有 URL 的语言部分的情况下解析和重写 URL。最后,应该以某种方式向服务提供该语言,以便它们在必要时进行本地化。

我怎样才能做到这一点?

我在 Jetty 容器中使用 Jersey 1.17 嵌入到更大的服务器进程中。

【问题讨论】:

    标签: java rest url-rewriting localization jersey


    【解决方案1】:

    您可以将/en/ 或/fr/ 部分设为变量。然后将您的语言环境设置为变量的值。这是一个例子:

    @Path("/{locale}/username")
    public class UserResource {
    
       @GET
       @Produces("text/xml")
       public String getUser(@PathParam("locale") String locale) {
           ...
       }
    }
    

    但这可能不是最好的方法。回答后,我发现这个其他 SO question 是解决问题的更好方法:Getting the client locale in a jersey request 使用这种方式,您无需将其添加到 URL。只需让客户端设置一个标头即可。

    【讨论】:

    • 我的 +1 是为了标题使用
    猜你喜欢
    • 2011-07-06
    • 2019-12-30
    • 2015-05-20
    • 2023-04-02
    • 1970-01-01
    • 2023-01-15
    • 2016-05-14
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多