2013-11-26 1 views
1

Учитывая серверный сервер RESTful, который использует JSON-кодирование для объектов. Запрос GET возвращает объект, например { id: 42, name: 'Peter', age: 28 }. Теперь я задаюсь вопросом, должен ли запрос POST, который вставляет новый объект, вернуть весь объект в той же форме или просто вернуть созданный идентификатор.Должен ли сервер REST отправлять весь объект или просто идентификатор POST?

Например, клиент отправляет этот запрос для создания новой записи в базе данных.

method: POST 
url:  http://example.com/persons 
type: application/json 
content: { name: 'Max', age: 35 } 

Если сервер ответит { id: 43, name: 'Max', age: 35 } или только с созданным идентификатором, как 43 или { id: 43 }?

В этом минимальном примере я предполагаю, что пропускная способность не имеет большого значения, но на самом деле существуют более длинные свойства, кодирующие географические области.

+0

Разве это не зависит от того, что вы хотите делать с данными? Кроме того, отправка обратно имеет смысл только для любых полей, которые сервер изменил. Клиент знает других. –

+0

@ChristopherCreutzig Нет ли рекомендаций по этому поводу? Это не так, вы можете написать ответ на основе вашего комментария, и я помечаю его как принятый. – danijar

+0

Это зависит от того, что нужно клиенту. Я с Кристофером на этом. Я предполагаю, что руководство должно было бы вернуть его, если данные были изменены сервером, и эти изменения должны быть переданы клиенту. –

ответ

1

Я не в курсе каких-либо руководящих принципов. Лично я думаю, что может быть полезно вернуть данные, которые клиент не может знать - в первую очередь, новый идентификатор, конечно, но сервер может иметь канонизацию или иное изменение других данных.

Но в конце концов, это просто зависит от того, что клиент хочет делать с данными. Если вообще что-то возвращать, я бы использовал формат, открытый для дальнейшего расширения, а не только числовой идентификатор или что-то в этом роде.

0

Операция создания должна в идеале вернуть URI обратно вызывающему абоненту, поэтому я бы сказал, что бы ни был идентификатором, и это будет наилучшей практикой.

2

REST является архитектурное проектирование нет жестких правил о том, что данные ответа должны быть

Смежные вопросы