我正在设计一个REST API,我希望将来可以在本地化。
因此我将URL定义为
形式/en/<resource_url>
旨在支持
/fr/<resource_url>
将来如果需要的话。
但是我只想定义每个资源网址服务一次。因此,我认为在匹配服务之前,我需要在没有URL的语言部分的情况下解析和重写URL。最后,该语言应以某种方式提供给服务,以便他们在必要时进行本地化。
我怎样才能做到这一点?
我在一个更大的服务器进程中嵌入Jetty容器中使用Jersey 1.17。
答案 0 :(得分:4)
您可以将/en/
或/fr/
部分变为变量。然后将您的语言环境设置为变量的值。这是一个例子:
@Path("/{locale}/username")
public class UserResource {
@GET
@Produces("text/xml")
public String getUser(@PathParam("locale") String locale) {
...
}
}
但这可能不是最佳方式。在回答之后,我发现了另一个问题,这是解决问题的更好方法:Getting the client locale in a jersey request通过这种方式,您无需将此添加到URL。只需让客户端设置标题即可。