Я разрабатываю REST API с Джерси как реализацию JAX-RS.
В каждом ресурсе я явно определяю ожидаемые параметры:
@GET
@Path("/someData")
public Response getSomeData(
@QueryParam("id") final Long id,
@QueryParam("name") final String name) {
...
}
Существует ряд фиксированных параметров, общих для всех ресурсов (например, «локаль»).
Есть ли способ (я согласен с введением зависимостей, специфичных для Джерси) я могу запретить любые параметры, которые не относятся ни к параметрам метода, ни к общим параметрам?
Так, например, если пользователь вызывает
/api/resource/someData?id=10&locale=en
- он получает данные, но если он вызывает
/api/resource/someData?id=10&locale=en&fakeParam=AAA
- возвращается статус 400, с содержимым, указывающим, что fakeParam
является неизвестным параметром.
В настоящее время второй запрос обрабатывается так же, как и первый, а fakeParam
просто игнорируется.
Думаю, описанная валидация поможет пользователям моего API раньше выявлять ошибки.