2011-06-24 81 views
10

我正在准备一个基于控制台的应用程序,该应用程序的结果是一个RDF/XML文件,其中包含来自LinkedIn的所有连接的数据。现在问题是我的整个应用程序都是基于控制台的,我需要有一个REST API以便与我的应用程序结合。适用于Java的REST API?

我不知道REST API以及如何在JAVA中使用它,但可以轻松地通过文档并理解它。我的应用程序使用LinkedIn的REST API。

那么你能为Java提供一些好的REST API吗?

+2

如果我理解正确的话,尝试[这]链接(http://blogs.oracle.com/enterprisetechtips/entry/consume_restful_web_services_with) –

回答

22

JAX-RS是RESTful Web服务的标准Java API。 Jersey是这方面的参考实现,它具有服务器端和客户端API(所以,将代码中的方法公开为REST风格的Web服务,以及与其他地方运行的REST风格的Web服务对话的方式)。

还有其他JAX-RS的实现,例如Apache CXFJBoss RESTEasy

+0

非常感谢......在介绍了很多之后,我认为这对于初学者来说是最好的和最简单的方法。 –

+0

你能给我推荐一些上面的例子吗? –

+1

泽西岛有一个很好的[用户指南](http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e8)。 – Jesper

1

快速的代码示例:

1)添加javax.ws.rs依赖于你的POM(如果使用Maven)或下载。

<dependency> 
      <groupId>javax.ws.rs</groupId> 
      <artifactId>jsr311-api</artifactId> 
      <version>1.1.1</version> 
    </dependency> 

2)创建一个空的类来定义服务的路径;例如在application/service/rest听证会是

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("/service/rest") 
public class WebConfig extends Application { 
} 

3)创建你的API的控制器。例如,如果我们需要这些调用: application/service/rest/resource/{id}一个简单的代码是:

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.core.Response.Status;  

@Path("resource/{id}") 
public class ApiController { 

    /** 
    * Call: <code>/service/rest/resource/23</code> 
    * @return HTTP Response 
    */ 
    @GET 
    public Response getResource(@PathParam("id") String anId) { 
    Resource myResource = whatever.get(anId); 
    return Response.status(Status.OK).entity(myResource).build(); 
    } 

4)如果我们要指定一个JSON响应是确保您有干将为您的资源和类型:

@GET 
@Produces("application/json") 
public Response getResource(@PathParam("id") String anId) { 
    // the same 
} 
0

如果您正在考虑在云中托管您的Java代码,Raimme Platform为您提供了一个很好的机会,只需一个注释就可以公开一个REST API端点。

假设您有一个名为my.app.Customer的数据库对象/表,并且您希望创建一个端点来返回所有匹配某个名称的客户。

@Rest(url = "customers/find") 
public List<Customer> find(@Param("keyword") String keyword) 
{ 
    return { select id, name, company.name from my.app.Customer where name ilike '%#keyword%' }; 
} 

你可以找到更多在这里:在Raimme,你可以按如下方式实现这一目标。http://raimme.com/devcenter?questionId=1cg000000000g