tutorial servicio español ejemplo consumir java web-services rest

servicio - web service rest java



¿Cómo crear un servicio web Restful con parámetros de entrada? (5)

Otra forma de hacerlo es obtener el UriInfo en lugar de todo el QueryParam

Entonces podrá obtener el queryParam según sea necesario en su código

@GET @Path("/query") public Response getUsers(@Context UriInfo info) { String param_1 = info.getQueryParameters().getFirst("param_1"); String param_2 = info.getQueryParameters().getFirst("param_2"); return Response ; }

Estoy creando un servicio web tranquilo y quería saber cómo creamos un servicio con parámetros de entrada y también cómo invocarlo desde un navegador web

Por ejemplo

@Path("/todo") public class TodoResource { // This method is called if XMLis request @PUT @Produces( {MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) public Todo getXML() { Todo todo = new Todo(); todo.setSummary("This is my first todo"); todo.setDescription("This is my first todo"); return todo; }

y puedo invocarlo usando http://localhost:8088/JerseyJAXB/rest/todo

Y quiero crear un método como

@Path("/todo") public class TodoResource { // This method is called if XMLis request @PUT @Produces( {MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) public Todo getXML(String x, String y) { Todo todo = new Todo(); todo.setSummary(x); todo.setDescription(y); return todo; }

En el caso de servicios web basados ​​en el jabón, lo invocaría así.

http://localhost:8088/JerseyJAXB/rest/todo?x=abc&y=pqr

pero quiero saber cómo invocarlo con reposo y también puedo pasar los parámetros como lo estoy haciendo en el ejemplo anterior cuando uso reposo y camiseta.


Puedes probar esto ... poner parámetros como:
http://localhost:8080/WebApplication11/webresources/generic/getText?arg1=hello en su navegador ...

package newpackage; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.Consumes; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PUT; import javax.ws.rs.QueryParam; @Path("generic") public class GenericResource { @Context private UriInfo context; /** * Creates a new instance of GenericResource */ public GenericResource() { } /** * Retrieves representation of an instance of newpackage.GenericResource * @return an instance of java.lang.String */ @GET @Produces("text/plain") @Consumes("text/plain") @Path("getText/") public String getText(@QueryParam("arg1") @DefaultValue("") String arg1) { return arg1 ; } @PUT @Consumes("text/plain") public void putText(String content) { } }


Si desea parámetros de consulta, use @QueryParam .

public Todo getXML(@QueryParam("summary") String x, @QueryParam("description") String y)

Pero no podrá enviar un PUT desde un navegador web simple (hoy). Si escribes la URL directamente, será un GET.

Filosóficamente, esto parece que debería ser un POST, sin embargo. En REST, por lo general, POST a un recurso común, /todo , donde ese recurso crea y devuelve un nuevo recurso, o PUT a un recurso específicamente identificado, como /todo/<id> , para la creación y / o actualización.


Ten cuidado. Para esto necesitas @GET (no @PUT).


Usted puede. Intenta algo como esto:

@Path("/todo/{varX}/{varY}") @Produces({"application/xml", "application/json"}) public Todo whatEverNameYouLike(@PathParam("varX") String varX, @PathParam("varY") String varY) { Todo todo = new Todo(); todo.setSummary(varX); todo.setDescription(varY); return todo; }

Entonces llama a tu servicio con esta URL;
http://localhost:8088/JerseyJAXB/rest/todo/summary/description