일반 웹 서비스를 구축 중이며 나중에 구문 분석을 위해 모든 쿼리 매개 변수를 하나의 문자열로 가져와야합니다. 어떻게 할 수 있습니까?
답변
@QueryParam("name")
컨텍스트를 통해 단일 매개 변수 또는 모든 매개 변수에 액세스 할 수 있습니다 .
@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}
핵심은 @Context
jax-rs 주석 이며 다음 액세스에 사용할 수 있습니다.
UriInfo, 요청, HttpHeaders, SecurityContext, 공급자
답변
요청 URI의 구문 분석되지 않은 쿼리 부분은 UriInfo
객체 에서 가져올 수 있습니다 .
@GET
public Representation get(@Context UriInfo uriInfo) {
String query = uriInfo.getRequestUri().getQuery();
...
}
답변
받아 들여지는 대답에 조금 더 추가하십시오. 또한 방법에 추가 매개 변수를 추가하지 않고도 다음과 같은 방법으로 모든 쿼리 매개 변수를 가져올 수 있으며 이는 swagger 문서를 유지할 때 유용 할 수 있습니다.
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}