2016-01-05 5 views
0

Я пытаюсь получить доступ к точке доступа REST, которая добавляет книгу в расположение книжной полки.Вызов запроса PUT несколько раз

PUT /bookshelf/books/1 

HTTP/1.1 201 Created 

Теперь, если я пытаюсь добавить книгу снова с идентификатором 1

PUT /bookshelf/books/1 

HTTP/1.1 500 Internal server error 

Я получаю 500 Внутренняя ошибка сервера с сообщением ответа

"Resource already exists, cannot add duplicate item" 

Теперь это выглядит не так со мной. Это правильный ответ, который можно ожидать от сервера. Учитывая, что операция PUT, я чувствую, что клиенты должны свободно запускать вызовы PUT, чтобы делать это снова и снова. Правильно ли я понимаю?

Если нет 500 следует ли сервер просто вернуть HTTP/1.1 200 OK?

ответ

0

PUT is idempotent - если вы вызываете его несколько раз, вы должны получить тот же результат. т. е. объект создается/обновляется в соответствии с вашим запросом. Возврат 500 к запросу PUT, потому что объект уже существует, идет против семантики RESTful. Я бы также ожидал 200 в этом случае.