Ответ 1
Я не думаю, что вы должны добавить вещи "action = credit & value = 10". Вы можете создавать больше/больше URI. Например:
create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10
Рассмотрим, что мне нужно разработать банковское приложение REST, которое позволяет создавать/уничтожать банковские счета, а также следующие операции на счете: вывод/кредит/getBalance.
PUT/Bank/john
Здесь я использую PUT вместо POST, потому что эта операция idempotent и потому, что клиент передает URL
DELETE/Bank/john
GET/Bank/john
POST/Bank/john
действие = вывести & value = 10
POST/Bank/john
действие = кредитной & value = 10
Здесь я использовал POST, потому что вывод/кредит явно не идемпотентный
является ли RESTful способ разработки этих операций?
У меня такое ощущение, что я пишу что-то вроде RPC-like, помещая глаголы (отменить | кредит) внутри параметр действия.. и я часто читаю, что REST не должен имитировать стиль RPC...
Я не думаю, что вы должны добавить вещи "action = credit & value = 10". Вы можете создавать больше/больше URI. Например:
create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10
При работе с REST это обычно помогает начать с размышлений с точки зрения ресурсов. В этом случае ваш ресурс - это не просто ваш "банковский счет", а транзакция этого банковского счета.
Депозит
POST /Bank/Account/John/Transaction
currency=USD&amount=10
Вывод
POST /Bank/Account/John/Transaction
currency=USD&amount=-10
Вы должны включить заголовок Location
в эту недавно созданную транзакцию.
Вы создаете транзакцию. Преимущество этого заключается в том, что вы можете ссылаться на эту транзакцию как ресурс.
GET /Bank/Account/John/Transaction/12345
Это может вернуть запись этой точной транзакции (например, ваши пользователи обычно хотят записи дебетов и кредитов на их учетной записи).