2017-10-04 6 views
0

Comme le suggère le titre, j'ai des méthodes Spring implémentant des annotations REST et REST printanières @Path Je veux obtenir la signature complète de l'API faite à arriver à cette méthode, je veux dire la signature complète là un moyen Par exempleExiste-t-il un moyen d'obtenir la signature API complète de REST Api Inside la méthode implémentant @Path

@Path("/customer/{id}") 
method(String id){} 

Je peux obtenir la signature complète comme: http://host:port/customer/1 dans la méthode.

Répondre

2

Oui, vous pouvez obtenir le {id} en utilisant l'annotation @PathParam:

@Path("/customer/{id}") 
public method(@PathParam("id") String id) { 
    // implementation 
}  
+0

Cela ne résoudra pas le problème, j'ai besoin de la signature Complete API qui mène à l'appel de cette méthode comme je l'ai expliqué. Je dois obtenir "http: // hôte: port/client/1" la signature complète – user2681668

0

Vous pouvez simplement injecter UriInfo et utiliser la méthode getAbsolutePath().

@GET 
@Path("/customer/{id}") 
public Response get(@PathParam("id") String id, @Context UriInfo info) { 
    String absPath = info.getAbsolutePath().toString(); 
} 

En aparté, s'il vous plaît prendre un certain temps pour apprendre la différence entre Spring MVC (REST) ​​et Jersey (JAX-RS). Votre question semble suggérer que vous pensez qu'ils pourraient être la même chose, ce qu'ils ne sont certainement pas.

0

Je pense que cela pourrait répondre à votre question.

@Path("/customer/{id}") 
@Get 
public ResponseEntity<String> getCustomer(
      @PathParam("id") String id, HttpServletRequest request) { 
    System.out.println(request.getRequestURL());     
    return ResponseEntity.ok(id); 
} 

Avec le chemin argument param, nous avons besoin d'ajouter HttpServletRequest qui porte l'ensemble des informations sur cette demande particulière.

request.getRequestURL() Ici, request.getRequestURL() donne le chemin d'accès complet à la requête. Par exemple http://localhost:8080/testApp/customer/1.

Espérons que cela aide.