регулярное выражение @QueryParam

#java #regex #rest #jersey

#java #регулярное выражение #отдых #джерси

Вопрос:

Я использую Jersey для Rest и имею метод, который принимает @QueryParam.

Однако пользователи могут отправлять @QueryParam. следующим образом:

contractName# где # — число от 0 до 155.

Как я могу определить его в параметре запроса (например, в выражении регулярных выражений)?

Ответ №1:

Вы не можете указать регулярное выражение. Однако вы можете определить пользовательский тип Java для представления этого параметра запроса и реализовать собственное преобразование из String в этот тип — см. http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e255 (пример 2.15).

Ответ №2:

Я не думаю, что вы можете сделать это с помощью QueryParam, но вы можете получить список параметров напрямую:

 @GET
public String get(@Context UriInfo ui) {
    MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
}
  

и выполните итерацию в поисках ключей, соответствующих вашему регулярному выражению.

Ответ №3:

 @GET
public String get (@QueryParam(value="param") String param){

 boolean test =testYourParamWithNativeRegexpTools(param);
 if( test==false)return 400;
 else //work
.....
}