2017-09-10 6 views
0

J'ai créé mon tout premier api de base. Son travail à trouver et me donne des résultats en XML en utilisant cette URLComment ajouter des paramètres dans l'API de repos pour une réponse spécifique dans le code?

http://localhost:8080/Webservice/Test/RestClient 

Maintenant, je pense Si je veux que mon api demander serveur uniquement les données spécifiques alors je comment puis-je utiliser des paramètres pour la même dans l'URL d'api.

Voici mon petit code mis à jour

package RestClient; 

//import javax.servlet.annotation.WebServlet; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.xml.bind.annotation.XmlRootElement; 

@Path("/RestClient") 
@XmlRootElement 
public class Restwebclient { 

    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String sayXMLHello(@PathParam("x") int x, @PathParam("y") int y) { 

     String output = ""; 

     if (x == 1 && y == 1) { 
      output = "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; 
     } 

     else if (x == 2 && y == 2) { 
      output = "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; 
     } 

     return output; 
    } 

} 

Et web.xml est ici

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> 
    <display-name>Webservice</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

<servlet> 
<servlet-name>JAVA WS</servlet-name> 
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>RestClient</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>JAVA WS</servlet-name> 
    <url-pattern>/Test/*</url-pattern> 
</servlet-mapping> 

</web-app> 

Mais quand exécuter les paramètres de passage d'URL comme celui-ci ne vient en sortie

http://localhost:8080/Webservice/Test/RestClient?x=1&y=1 

Remarque: La sortie attendue des paramètres ci-dessus dans l'URL doit être la première si la condition

Puis-je savoir ce qui me manque pour y parvenir?

Répondre

0

Vous envoyez des paramètres dans une requête, vous devez donc utiliser @QueryParam et non @PathParam. méthode de changement:

public String sayXMLHello(@QueryParam("x") int x, @QueryParam("y") int y) { 

Recherche Params:

http://localhost:8080/Webservice/Test/RestClient?x=1&y=1 

chemin Params besoin de changer le chemin:

@Path("{x}/{y}/RestClient") 

http://localhost:8080/Webservice/Test/1/1/RestClient 
+0

Ajouter lorsque nous utilisons PathParam? – LearnJava

+0

ajouter des détails aux paramètres de chemin d'accès – user7294900

+0

S'il vous plaît partager avec moi une chose.Je veux authentifier l'utilisateur et fournir un jeton pour accéder au serveur web. Ai-je vraiment besoin d'utiliser le concept OAuth.C'est ce que je fais, je veux dire d'abord que l'url aura un nom d'utilisateur, un mot de passe et un jeton maître. Cette requête me retournera pour accéder aux données du serveur web. Du côté du serveur web, je voudrais créer deux méthodes pour authentifier l'utilisateur, le mot de passe et le jeton principal et dans la seconde méthode pour exposer les données si le jeton généré correspond à la première méthode. Je peux aussi générer un délai d'expiration avec un jeton Est-ce logique? – LearnJava