Twitter的REST api允许您在URI的末尾附加JSON或XML。
e.g。
http://twitter.com/statuses/public_timeline.json
http://twitter.com/statuses/public_timeline.xml
在servlet的上下文中,状态将是webapp上下文名称& public_timeline.json映射到某个servlet。我想维护一个servlet来执行调度。可以在servlet中完成吗?
答案 0 :(得分:2)
Servlet中的URL映射仅支持扩展匹配,而不支持前缀匹配。所以这不起作用,
<url-pattern>/public_timeline.*</servlet-class>
这是我的建议,
<servlet-mapping>
<url-pattern>/*</servlet-class>
<servlet-name>YourServlet</servlet-class>
</servlet-mapping>
在servlet中,你可以这样做,
String path = request.getPathInfo();
if (path == null) return;
int index = path.indexOf('/');
String api;
if (index < 0)
api = path;
else
api = path.substring(index+1);
if (api.equals("public_timeline.json"))
// Process it as JSON
if (api.equals("public_timeline.xml"))
// Process it as XML
大多数API使用format参数来指示响应格式。我认为这是更好的方式。
答案 1 :(得分:1)
在Java中,如果您将JAXRS用于其他服务,请注释您的REST服务方法,如:
@Path("/statuses/public_timeline{fileExt}")
然后将以下内容添加到方法参数:
@PathParam(value="fileExt") String fileExt
fileExt变量将是您的扩展名。我认为这将是使用JAXRS
执行此操作的标准REST方式答案 2 :(得分:0)
是的,这是可能的。
查看web.xml文件,您可以使用以下模式:
<servlet-mapping>
<url-pattern>public_timeline.*</servlet-class>
<servlet-name>myservlet</servlet-class>
</servlet-mapping>
我认为你甚至可以使用public_timeline。[json | xml]
答案 3 :(得分:0)
你可以在url-pattern中进行简单的全局匹配:
<servlet>
<servlet-name>public_timeline</servlet-name>
<servlet-class>your.package.PublicTimelineServlet</servlet-class>
</servlet>
<servlet-mapping>
<url-pattern>/public_timeline.*</servlet-class>
<servlet-name>public_timeline</servlet-class>
</servlet-mapping>