我在一家喜欢使用“企业”这个词的公司开始了一份新工作。因此,他们所写的一切都是用Java编写的。我来自一个非常网络开发的背景,主要是使用LAMP堆栈。
现在,直到三天前,除了人们使用Java以外,我对Java一无所知,而且它是一种编程语言。谷歌语言本身就很简单了。然而,当人们说“Java”时,它们似乎指的不仅仅是语言,例如各种框架和应用程序服务器。它有点过分,并且在使用“Java”时遇到了一些麻烦。
即将开展的项目涉及我为其中一个产品创建一个公开的REST API。看起来很简单。但是,我有一些关于如何继续的问题....
我是第一次与JBoss AS合作;不确定PHP中是否有相应的东西,所以我可以理解JBoss究竟做了什么,但我怀疑这是一种“正确”的做事方式。这就是我在想的事情:
1)创建一个包含单个servlet的包,如下所示:
package com.awesome.myrestapi;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HiggiltyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HiggiltyServlet() {
super();
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
// @todo ideally, do something more RESTfully useful and less vindictive
out.println( "<html><body>HAHA! all ur api requests are belong to us</body></html>" );
out.close();
}
}
2)正如您所看到的,我正在考虑重写服务方法以提供REST API请求。
3)相应地更新了我的web.xml文件,以便url-pattern匹配“higgilty”,从而使我的URL端点类似....
http://localhost/awesomeproject/higgilty
现在,我觉得我可能做错了什么。我是以正确的方式解决这个问题,还是我完全不合适?
非常感谢任何帮助。
答案 0 :(得分:3)
您应该使用面向REST的框架,例如Restlet,Jersey或RESTeasy。这将有助于您处理各种事情,例如拆分URI,拥有基于资源和表示的系统以及可能的内容类型协商(如果您需要)。
Restlet可以在servlet容器中运行,也可以作为独立应用程序运行。 RESTeasy是一个JBoss项目,但我不会因为这个原因而忽略其他框架,因为JBoss AS原则上应该能够运行用其他框架编写的应用程序(我在JBoss AS中成功运行了Restlet应用程序,虽然我不经常使用它。)
答案 1 :(得分:1)
同意最好使用框架。
如果你想自己滚动,你需要写一些东西来解析URL并路由到适当的方法。与web.xml匹配的URL模式非常有限。
此外,您可能希望覆盖与HTTP方法相对应的HttpServlet方法 - doGet,doPost等。