Я знаю, что с помощью REST ресурсы открываются в качестве имени и что действия над этими ресурсами являются методами HTTP, такими как GET, PUT, POST и DELETE.
И я знаю, что запросы обрабатываются с помощью аннотаций @RequestMapping над методом, который обрабатывает операцию с ресурсом.
Насколько я понял, как стандартные веб-приложения, так и приложения RESTful используют некоторые коды для связи со своими клиентами (приложение RESTful имеет расширенный набор кодов), которые, я думаю, отражают статус запроса (например, 200 — запрос является успешным GET, возвращающим контент и т. д.).
Теперь в документации показано использование аннотации @ResponseStatus, как в этом примере. :
Код: Выделить всё
@RequestMapping(value="/orders", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED) // 201
public void createOrder(HttpServletRequest request, HttpServletResponse response) {
Order order = createOrder(request);
// determine full URI for newly created Order based on request
response.addHeader("Location",
getLocationForChildResource(request, order.getId()));
}
Но что именно делает аннотация ниже:
Код: Выделить всё
@ResponseStatus(HttpStatus.CREATED) // 201
И глядя на официальную документацию, я могу прочитать:
Отмечает метод или класс исключения кодом состояния и причиной, которая
должна быть вернулся. Код состояния применяется к HTTP-ответу
при вызове метода обработчика или при каждом возникновении
исключения.
Так что же именно это означает? Я думаю, что как это сделано в предыдущем примере, он устанавливает статус 201, который говорит о том, что ресурс корректно создан POST-запросом. Если это верно, у меня есть два вопроса:
- Ресурсом является URI /orders. Так что же создано? файл с именем orders (думаю, что это утверждение неверно) или что?
- Где статус 201 поставить?
Подробнее здесь: https://stackoverflow.com/questions/283 ... pplication
Мобильная версия