3

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

因此,我将 URL 定义为以下形式

/en/<resource_url>

为了能够支持

/fr/<resource_url>

以后有需要的话。

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

我怎样才能做到这一点?

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

4

1 回答 1

4

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

@Path("/{locale}/username")
public class UserResource {

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

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

于 2013-04-26T18:03:31.440 回答