Конечные точки Curling Jersey дают "Не удалось найти диапазон для текущего запроса" - PullRequest
1 голос
/ 02 апреля 2019

Я сталкиваюсь с действительно необъяснимой ошибкой при использовании сервера Dropwizard с пользовательскими ресурсами JAX-RS, зарегистрированными на сервере Джерси. Следующее верно:

  1. Скручивание несуществующей конечной точки дает 404, как и ожидалось.
  2. Скручивание существующей конечной точки неверным методом (например, POST вместо GET) дает 405, как и ожидалось.
  3. При скручивании существующей конечной точки правильным методом выдается сообщение «Не удалось найти диапазон для текущего запроса».
  4. Мой код обработчика конечной точки никогда не затрагивается, что можно проверить, установив точки останова в коде.
  5. Удивительно, но если я переместил всю аннотацию пути на свой метод-обработчик, а не частично на весь класс, я получу вместо этого 404.

Вот пример формата, который выдает странное сообщение об ошибке:

@Produces({MediaType.APPLICATION_JSON})
@Path("application/api/v1/")
public class GetConfigurationResource extends MyResource<Arg, Result> {

  @GET
  @Path("getConfiguration/{uuid}")
  public Response handleHttpRequest(
      @Context HttpHeaders headers, @Context UriInfo uriInfo, @PathParam("uuid") String uuid) {
    return super.handleHttpRequest(headers, new Arg(), new Result());
  }
}

Вот пример, который дает 404:

@Produces({MediaType.APPLICATION_JSON})
public class GetConfigurationResource extends MyResource<Arg, Result> {

  @GET
  @Path("application/api/v1/getConfiguration/{uuid}")
  public Response handleHttpRequest(
      @Context HttpHeaders headers, @Context UriInfo uriInfo, @PathParam("uuid") String uuid) {
    return super.handleHttpRequest(headers, new Arg(), new Result());
  }
}

Вот команда curl:

curl -X GET http://127.0.0.1:8080/application/api/v1/getConfiguration/5

Я могу воспроизвести эту ошибку даже при использовании игрушечных классов, подобных этой, в моем приложении. Каждая конечная точка дает одинаковый результат.

Простой поиск в Google сообщения об ошибке абсолютно не дает результатов. Так что это похоже на совершенно новую ошибку. Мне интересно, что может вызвать что-то подобное, и как я могу отладить это в Dropwizard / Jersey.

...