it-swarm.com.de

So erstellen Sie einen Restful-Webdienst mit Eingabeparametern

Ich erstelle einen restful-Webdienst und wollte wissen, wie wir einen Dienst mit Eingabeparametern erstellen und wie er von einem Webbrowser aufgerufen wird.

Zum Beispiel

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

und ich kann es mit http: // localhost: 8088/JerseyJAXB/rest/todo aufrufen.

und ich möchte eine Methode wie erstellen 

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

Im Falle von auf Seifen basierenden Web-Services würde ich es so anrufen

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

aber ich möchte wissen, wie ich es mit Rest aufrufen kann. Außerdem kann ich die Parameter wie im obigen Beispiel übergeben, wenn ich Rest und Trikot benutze.

17
SSG

Sie können ... probieren Sie so etwas:

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

Rufen Sie dann mit dieser URL Ihren Dienst an.
http: // localhost: 8088/JerseyJAXB/rest/todo/summary/description

36
perissf

Wenn Sie Abfrageparameter wünschen, verwenden Sie @QueryParam.

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

Sie können jedoch keinen PUT über einen einfachen Webbrowser (heute) senden. Wenn Sie die URL direkt eingeben, handelt es sich um einen GET. 

Philosophisch sieht das jedoch so aus, als sollte es ein POST sein. In REST setzen Sie normalerweise entweder POST auf eine gemeinsame Ressource, /todo, wo diese Ressource eine neue Ressource erstellt und zurückgibt, oder Sie PUT an eine speziell angegebene Ressource, wie /todo/<id>, zum Erstellen und/oder Aktualisieren.

10
dbreaux

Achtung. Dafür benötigen Sie @GET (nicht @PUT).

2
Oliver Raupach

eine andere Möglichkeit ist, die UriInfo anstelle des gesamten QueryParam abzurufen 

Dann können Sie den Abfrageparameter erhalten, wie er in Ihrem Code benötigt wird 

@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 ;

}
2
Ashish Shetkar

Sie können diese ... Parameter setzen als:
http: // localhost: 8080/WebApplication11/webresources/generic/getText? arg1 = hallo in Ihrem Browser ...

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) {





    }
}
0
Mr. Pawan kumar