Je crée un service Web reposant et je voulais savoir comment créer un service avec des paramètres d'entrée et comment l'invoquer à partir d'un navigateur Web.
Par exemple
@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;
}
et je peux l'invoquer en utilisant http: // localhost: 8088/JerseyJAXB/rest/todo
et je veux créer une méthode comme
@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;
}
Dans le cas de services Web basés sur du savon, je l'invoquerais comme ceci
http: // localhost: 8088/JerseyJAXB/rest/todo? x = abc & y = pqr
mais je veux savoir comment l'invoquer en utilisant repos et puis-je aussi passer les paramètres comme je le fais dans l'exemple ci-dessus lorsque j'utilise repos et maillot.
Vous pouvez . Essayez quelque chose comme ça:
@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;
}
Ensuite, appelez votre service avec cette URL;
http: // localhost: 8088/JerseyJAXB/rest/todo/summary/description
Si vous voulez des paramètres de requête, vous utilisez @QueryParam
.
public Todo getXML(@QueryParam("summary") String x,
@QueryParam("description") String y)
Mais vous ne pourrez pas envoyer de PUT depuis un simple navigateur Web (aujourd'hui). Si vous tapez directement l'URL, ce sera un GET.
Philosophiquement, cela semble être un post-test. Dans REST, vous utilisez généralement POST sur une ressource commune, /todo
, où cette ressource crée et renvoie une nouvelle ressource, ou sur une ressource spécifiquement identifiée, telle que /todo/<id>
, pour la création et/ou la mise à jour.
Faites attention. Pour cela, vous avez besoin de @GET (pas de @PUT).
une autre façon de faire est d’obtenir UriInfo au lieu de tout QueryParam
Ensuite, vous pourrez obtenir le queryParam selon vos besoins dans votre code
@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 ;
}
Vous pouvez essayer ceci ... mettez les paramètres comme:
http: // localhost: 8080/WebApplication11/webresources/generic/getText? arg1 = hello dans votre navigateur ...
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) {
}
}