2010-07-09 101 views
0

我在一个喜欢使用“企业”这个词的公司开始了一项新工作。因此,他们写的所有内容都是用Java编写的。我来自一个非常网络开发的背景,主要与LAMP堆栈一起工作。使用JBoss实现REST API服务的“正确”方式AS

现在,直到三天前,除了人们使用它以外,我对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模式将匹配“higgilty”,从而使我的URL端点像....

http://localhost/awesomeproject/higgilty 

现在,我觉得像我可能会做错事。我是以正确的方式去做这件事,还是我完全脱离了标记?

任何帮助,非常感谢。

回答

3

您应该使用面向REST的框架,如Restlet,JerseyRESTeasy。这将帮助您处理各种事情,如分割URI,拥有基于资源和表示的系统以及可能的内容类型协商(如果您需要的话)。

Restlets可以在servlet容器中运行,也可以作为独立应用程序运行。 RESTeasy是一个JBoss项目,但我不会因为这个原因而放弃其他框架,因为JBoss AS原则上应该能够运行使用其他框架编写的应用程序(我已经成功地在JBoss AS中成功运行了Restlet应用程序,尽管我不经常使用它)。

+0

啊,感谢您的解释。我会给它一个镜头。非常感谢你! – sayajay 2010-07-09 21:31:59

1

同意这可能是最好的使用框架。

如果你想推出你自己的,你需要写一些东西来解析URL和路由到适当的方法。与web.xml匹配的URL模式相当有限。

而且你可能要重写对应于HTTP方法HttpServlet的方法 - 的doGet,doPost方法等

+0

感谢您抽出时间发表评论! – sayajay 2010-07-13 20:30:07