Подтвердить что ты не робот

Включение идентификатора в URI для запросов PUT

Я читал некоторые документы о правильном использовании URI, используя службы отдыха, и я наткнулся на пример для базовых запросов GET.. DELETE.

Пример uri:

Получить всех пользователей

GET http://mydomain.org/api/users

Получить конкретный пользователь

GET http://mydomain.org/api/users/1

Обновить пользователя

PUT http://mydomain.org/api/users/1

УДАЛИТЬ пользователя

DELETE http://mydomain.org/api/users/1

Пользовательский ресурс будет либо JSON, либо XML в форме:

{
    Id: 1,
    FirstName: 'John',
    LastName: 'Doe'
}

Мой вопрос в том, что. Чтобы поддерживать принципы REST, требуется ли включать идентификатор ресурса в URI для запросов PUT?

4b9b3361

Ответ 1

Метод PUT запрашивает, чтобы закрытый объект был сохранен в поставляемом Request-URI.

Вы хотите PUT ресурс к тому же URI, на который вы намерены его GET.

RFC 2616 9.6 PUT

Ответ 2

Я собирался задать аналогичный вопрос, но я думаю, что нашел ответ. Я не уверен, что это принципы REST, но вот почему было бы плохо не включать ID в URI. Поэтому скажите, что ваш PUT похож:

PUT http://mydomain.org/api/users

И тогда вам случается обновлять несколько пользователей с другим идентификатором, но тот же URI, потому что в вашем URI нет идентификатора. Затем важно знать, что PUT - это идемпотентный http-глагол. Это означает, что вызов один раз должен иметь тот же эффект, что и называть его много раз. Поэтому некоторые промежуточные node в сети, просто следуя за тем, что вы PUT несколько раз, могут игнорировать все, но один из ваших запросов, потому что они имеют один и тот же URI. Наконец, это определенно не то, что вы хотите, потому что целью было обновление нескольких пользователей не только.