2013-03-25 2 views
0

Выполните следующую операцию:REST Поле обновления, которое имеет искомое значение из базы данных

Я хочу обновить поле «Производитель» на объекте автомобиля через вызов REST PUT. Данные, которые должны быть отправлены выглядит следующим образом:

{ 
    "Id": "1000000251" 
    "Manufacturer": "Honda" 
} 

Ключевым моментом здесь является то, что значение поля Производитель исходит из набора списка выбора, хранящихся в базе данных. Я также предоставляю клиенту отдельный GET-вызов, который позволяет им получать список действительных Производителей. Если пользователь предоставляет значение «Honnnda», я верну ошибку проверки.

В базе данных у меня есть следующие выборы, чтобы быть посмотрел:

1 Honda 
2 Toyota 
3 Ford 

Является ли она предпочитает, чтобы заставить их знать наши внутренние уникальные идентификаторы для каждого из них (безопаснее), и, таким образом, в том числе ManufacturerId поле на моем объекте JSON, или я могу разрешить им обновлять поле через текстовое значение? Я проверю ввод в обоих сценариях. Кроме того, перед отправкой запроса PUT им потребуется получить список доступных производителей, независимо от того.

EDIT - пользователям необходимо получить список доступных производителей перед тем, Я использовал автомобиль как «более осязаемый» пример, но моя система фактически не касается автомобилей.

+0

Помните, что HTTP не позволяет вам обновлять только одно свойство большего представления с помощью PUT. Вы должны обновить все представление. –

+0

Да, это определенно нормально. Я просто использовал сокращенную версию объекта для краткости, чтобы изолировать мой quesiton. Это не влияет на то, о чем я прошу. :) –

+0

Ну, пока вы можете контролировать свой код api-side, это действительно не имеет значения. Однако, как пользователь, его более удобно отправлять «Хонду», чем «42», я думаю ... Можете ли вы рассказать о том, почему пользователям нужно ПОЛУЧИТЬ список «доступных изготовителей независимо»? –

ответ

1

ОТДЫХ не говорит об этой теме. Однако, как правило, делает REST предпочитают использовать идентификаторы URI, как idenitifiers, поэтому можно утверждать, что вы должны послать ..

{ 
    "Id": "1000000251" 
    "Manufacturer": "http://myapi.com/manufacturers/1" 
} 

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

Я бы сказал, не потеть. Сделайте все, что лучше всего подходит для вашего сценария.

+0

Я ценю этот ответ. Я бы предпочел не предоставлять внешним клиентам наш внутренний идентификатор (не из-за безопасности, а потому, что они действительно не имеют смысла). Я думаю, что клиент будет более удобным для пользователя, чтобы позволить им указать текстовое значение, которое они хотят использовать, а затем я просто подтвержу его и, возможно, отправлю обратно ошибку 400, если они предоставляют плохие данные. Затем, в худшем случае, они могли бы повторно просмотреть действительные варианты для производителя. –

+0

@AdamLevitt Это кажется мне совершенно разумным. –

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