2017-12-29 38 views
-1

Wenn ich ein Servlet entwickle und die doGet-Methode übersteige, kann ich auf den Wert der Parameter zugreifen, die in der URL übergeben werden, wie req.getParameter ("myParam"). Die URL wird wie http://mysite:8080/APP?myParam=123 sein. Für den Fall der Ruhe Webservice (nehme an, die Umsetzung ist Jersey), wenn ich die Get-Service wie diesesWas ist der Unterschied zwischen Servlet Get und WebServce Rest Get?

@Get 
    @Path("myfunction") 
    @Compress 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response myfunction(@QueryParam("myParam") String myParam) 

Die URL wie dieses kann sowohl URl

http://mysite:8080/APP/myfunction/123 sein wird, machen curl oder Postbote aufgerufen werden. Aber ich habe nicht verstanden, was ist der Unterschied zwischen ihnen?

Und wie kann ich einen Get Rest Service (mit Trikot) machen, so dass die URL so sein wird http://mysite:8080/APP?myParam=123 und im Backend kann ich dieses Myparam bekommen?

Dank

+0

Hinweis, 'GET' Methode bedeutet nicht, dass Sie Abfrageparameter übergeben müssen. Eine einfache URL ohne Abfrageparameter kann auch die 'GET'-Methode verwenden. Wie gesagt, ich bin nicht sicher, was ist deine eigentliche Frage. – Ravi

Antwort

0

Da Sie zurückkehren werden kann JSON so dass diese gleiche Funktion wie WebService verwendet werden. Im Falle von Servlets leiten oder laden wir normalerweise eine andere Seite (ftl, jsp usw.), aber hier in dieser Funktion, da erwartet wird, dass Sie den JSON als Ausgabe produzieren, ja, Sie können ihn auch als Dienst verwenden.

Ein weiterer Unterschied, mit dem wir normalerweise konfrontiert sind, ist, dass die Funktionen innerhalb der App sicher sind und wir uns anmelden müssen, bevor wir auf einen bestimmten GET Anruf zugreifen.

Hier benötigen Sie keine Authentifizierung und es ist ein einfacher GET Aufruf, der JSON ausgibt, so dass Sie diese spezielle Funktion auch als Webservice verwenden können.

+0

Wie kann ich einen Get Rest Service (mit Trikot) machen, so dass die URL wie folgt aussehen wird http: // mysite: 8080/APP? MyParam = 123 und im Backend kann ich dieses Myparam bekommen? (Ist es möglich?) – BenMansourNizar

+0

Es gibt eine detaillierte Anleitung, um das zu tun, wo Sie Jersy API und Bibliotheken importieren müssen, damit es funktioniert –

+0

'RESTful' URL-Muster unterscheiden sich von der Verwendung von Querystrings. Lies [Representational_state_transfer # Relationship_between_URL_and_HTTP_methods] (https://en.wikipedia.org/wiki/Representational_state_transfer#Relationship_between_URL_and_HTTP_methods) –

-1

Es ist einfach einfach @ QueryParam verwenden, dann werden sie gleich sein. Beispiel:

import java.util.List; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.Response; 

    @Path("/users") 
    public class UserService { 

     @GET 
     @Path("/query") 
     public Response getUsers(
      @QueryParam("from") int from, 
      @QueryParam("to") int to, 
      @QueryParam("orderBy") List<String> orderBy) { 

      return Response 
       .status(200) 
       .entity("getUsers is called, from : " + from + ", to : " + to 
       + ", orderBy" + orderBy.toString()).build(); 

     } 

    } 

the URL pattern will be like 

    URI Pattern : “users/query?from=100&to=200&orderBy=age&orderBy=name” 
+0

lol, wenn du es schon wusstest, warum hast du dann eine Frage gestellt? Auch wenn du eine Frage gepostet hast, dann solltest du deine eigene Antwort nicht auf irgendeinen Link gepostet haben, der schon irgendwo vorhanden ist. Was wäre, wenn dieser Link morgen gebrochen wäre? – Ravi

Verwandte Themen