Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Первый вопрос: ну, дорогие мои, а как эти ваши setUserCity, calculateMatrix и startVideoConverter могут быть реализованы на REST?
setUserCity(userId, cityId) -> PATCH /users/[id] {city_id: [city_id]} // частичное изменение данных
calculateMatrix(data) -> POST /matrix_calculation/ {data}
startVideoConverter(options, source, destination) -> POST /video/[id]/convertation {options}
setUserCity(userId, cityId) -> PATCH /users/[id] {city_id: [city_id]} // частичное изменение данных
POST /launches/
{
missle: ...,
country: ...,
}
// Это не REST
POST /AddNumbers
{
"a": 2,
"b": 3
}
ответ:
{ "result": 5 }
// Это REST
POST /NumberSums
{
"a": 2,
"b": 3
}
ответ:
201 - created
Location: /NumberSums/uhfweiufhi234uhr23e42342
далее:
GET /NumberSums/uhfweiufhi234uhr23e42342
{
"value": 5
}
То, что в REST-интерфейсе не должно быть глаголов — это фантазии.
По-моему, так вполне очевидно, что PUT на launch запустит ракету, GET — узнает статус запущенной, POST поменяет целеуказание (доступно пока ракета летит, разумеется) а DELETE — взорвет ракету в воздухе
GET /launches/:id - получение информации о существующем запуске
POST /launches - запуск ракеты и возвращение { missile: ..., country: ... }
PUT / PATCH /launches/:id - изменение параметров запуска
DELETE /launches/:id - отмена конкретного запуска
PATCH /missile=1
> missile target =/country=usa
< missile
uri =/missile=1
target =/country=usa
state =fly
owner =russia
size =XXL
POST /hold
> hold
subject =/country=usa
size =1000btc
< hold
uri =/hold=1
subject =/country=usa
size =1000btc
POST /exchange
> exchange
one =/missile=1
two =/hold=1
< exchange
uri =/exchange=1
state =checking
one =/missile=1
two=/hold=1
PATCH /missile=2
> missile state =service
< missile
uri =/missile=2
state =service
owner =russia
size =M
PATCH /missile=3
> missile state =destroyed
< missile
uri =/missile=3
state =destroyed
owner =russia
size =XXS
PATCH /missile/owner=russia/state=ready/size>XXL/limit=1
> missile target =/country=usa
< missile
uri =/missile=4
state =fly
target =/country=usa
owner =russia
size =XXL
иначе откуда его узнать
and a representation that describes the status of the request while referring to the new resource(s).
«за сценой» изменяется другой ресурс
POST /missile-launches/{id}
Именование сложных действий в REST API