Параметры REST: объект против собственных типов данных

#c# #wcf #api #rest

#c# #wcf #API #rest

Вопрос:

При разработке службы WCF REST, использующей JSON в качестве формата обмена сообщениями, лучше всего передавать сериализованные объекты JSON в службу WCF или JSON, содержащие пары значений параметров?

Другими словами, какая сигнатура метода была бы лучшей:

 public void CreateUser(User user);
  

или

 public void CreateUser(string userName, string firstName, string lastName, string email, string password);
  

Пользовательский объект будет содержать свойства для имени пользователя, имени, фамилии, электронной почты и пароля.

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

Верны ли мои мысли?

Ответ №1:

На самом деле — я ожидал бы, что REST-ful API создаст пользователя, который будет выглядеть как HTTP POST, например

 http://myhostname/users/
  

где тело запроса содержит поля, необходимые для создания нового пользовательского объекта.

Затем веб-служба создаст объект, сохранит его и вернет URI объекту, чтобы разрешить его последующее извлечение. Например, здесь это может возвращать

 http://myhostname/users/DanWaterbly
  

Потребителю гораздо проще использовать такой подход, поскольку правильно написанный десериализатор будет терпим к дополнительным или отсутствующим элементам в пользовательском объекте.

Комментарии:

1. Я тоже голосую за этот подход. Это более чистый и многоразовый дизайн, который инкапсулирует то, с чем вы работаете, вместо того, чтобы работать с набором пар ключ / значение.