В REST OPTIONS — это аннотация уровня метода. Эта аннотация указывает, что следующий метод будет отвечать только на HTTP-запрос OPTIONS. Он используется для запроса информации о возможности связи, доступной для ресурса.
Этот метод позволяет клиенту REST API определить, какой HTTP-метод (GET, HEAD, POST, PUT, DELETE) можно использовать для ресурса, идентифицируемого запрошенным URI, без инициирования запрос ресурсов с использованием любого конкретного метода HTTP. Ответ на этот метод не кэшируется.
Ответ 200 OK должен включать любые поля заголовка, такие как Разрешить, которые определяют вариант связи, реализованный сервером, и применимы к ресурсу, указанному запрошенным URI. Тело ответа (если есть) также должно включать информацию о возможности связи, доступной для ресурса. Формат такого тела не определен спецификацией, но может быть определен будущими расширениями HTTP. Если тело ответа не включено, значение поля заголовка Content-Length должно быть равно 0.
Пример: –
200 OK
Разрешить: HEAD,GET,PUT,DELETE,OPTIONS
Если URI запроса представляет собой знак звездочки ( * ), то запрос метода OPTIONS применяется к серверу, а не к конкретному ресурсу. Его можно использовать как ping для проверки его возможностей.
Метод REST OPTIONS также используетсядля запроса CORS (совместное использование ресурсов между источниками). Подробнее о CORS можно прочитать здесь.
Попробуем понять это на примере.
Пример :-
В этом примере REST OPTIONS мы нажмем этот URL-адрес ‹base URL›/books, чтобы получить список HTTP-методов, разрешенных для книжного ресурса.
import
javax.ws.rs.OPTIONS; import
javax.ws.rs.Path; import
javax.ws.rs.Produces; import
javax.ws.rs.core.MediaType; import
javax.ws.rs.core.Response;
@Path("books") public
class
OptionsMethodExample {
@OPTIONS @Produces(MediaType.APPLICATION_JSON) @Path("/") public
Response optionsForBookResource() {
return
Response.status(200) .header("Allow","POST, PUT, GET") .header("Content-Type", MediaType.APPLICATION_JSON) .header("Content-Length", "0") .build(); }
}
Результат :-
Если вам понравилось, пожалуйста, поделитесь своими мыслями в разделе комментариев и поделитесь им с другими.
Первоначально опубликовано на codedestine.com 27 июля 2017 г.