Buduję ogólną usługę internetową i muszę pobrać wszystkie parametry zapytania w jeden ciąg do późniejszego przeanalizowania. Jak mogę to zrobić?
Odpowiedzi:
Możesz uzyskać dostęp do pojedynczego parametru poprzez @QueryParam("name")
lub do wszystkich parametrów poprzez kontekst:
@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}
Kluczem jest @Context
adnotacja jax-rs , do której można uzyskać dostęp:
UriInfo, Request, HttpHeaders, SecurityContext, Providers
Dodanie nieco więcej do zaakceptowanej odpowiedzi. Możliwe jest również pobranie wszystkich parametrów zapytania w następujący sposób bez dodawania dodatkowego parametru do metody, co może być przydatne przy utrzymywaniu dokumentacji swagger.
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}