#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
.....
}