2011-06-24 19 views
10

Estoy preparando una aplicación basada en la consola y el resultado de la aplicación es un archivo RDF/XML que contiene datos de todas mis conexiones de LinkedIn. Ahora el problema es que toda mi aplicación está basada en la consola y necesito tener una API REST para incorporarla a mi aplicación.API REST para Java?

No conozco las API REST y cómo usarla con JAVA, pero puedo acceder fácilmente a la documentación y comprenderla. Mis aplicaciones usan la API REST de LinkedIn.

¿Puede sugerir algunas de las buenas API REST para Java?

+2

Si he entendido bien, trate de [esta] enlace (http://blogs.oracle.com/enterprisetechtips/entry/consuming_restful_web_services_with) –

Respuesta

22

JAX-RS es la API estándar de Java para servicios web RESTful. Jersey es la implementación de referencia para esto, tiene API del lado del servidor y del lado del cliente (por lo tanto, formas de exponer métodos en su código como servicios web RESTful, así como formas de hablar con servicios web RESTful que se ejecutan en otro lugar).

También hay otras implementaciones de JAX-RS, por ejemplo Apache CXF y JBoss RESTEasy.

+0

Gracias ... después de referirme mucho, creo que este es el mejor y más fácil enfoque para los principiantes. –

+0

¿Me puede sugerir algunos ejemplos de lo anterior? –

+1

Jersey viene con una buena [guía del usuario] (http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e8). – Jesper

1

ejemplo de código rápida:

1) Añadir el javax.ws.rs dependencia en su pom (si se utiliza Maven) o descargarlo.

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

2) Cree una clase vacía para definir la ruta de su servicio; por ejemplo para audición a application/service/rest sería

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

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

3) Crear el controlador de la API. Por ejemplo si necesitamos estas llamadas: application/service/rest/resource/{id} un código simple sería:

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) Si queremos especificar una respuesta JSON asegurarse de que tiene los captadores para el recurso y el tipo:

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

Si está considerando alojar su código Java en una nube, Raimme Platform le ofrece una buena oportunidad para exponer un punto final de REST API con solo una anotación.

Digamos que tiene un objeto/tabla de base de datos llamado my.app.Customer, y desea crear un punto final para devolver todos los clientes que coincidan con un nombre determinado. En Raimme, que se lograría esto como sigue:

@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%' }; 
} 

Usted puede encontrar más información aquí:. http://raimme.com/devcenter?questionId=1cg000000000g