У меня есть веб-сервис, который принимает параметры JSON, и имейте определенные URL для методов, например:
http://IP:PORT/API/getAllData?p={JSON}
Это - определенно не REST, поскольку это не является не сохраняющим состояние. Это принимает cookie во внимание и имеет его собственную сессию.
Это - RPC? Каково различие между RPC и REST?
Как другие сказали, основное отличие - то, что REST централен существительным, и RPC централен глаголом. Я просто хотел включать этот ясная таблица примеров демонстрация что:
---------------------------+-------------------------------------+-------------------------- Operation | RPC (operation) | REST (resource) ---------------------------+-------------------------------------+-------------------------- Signup | POST /signup | POST /persons ---------------------------+-------------------------------------+-------------------------- Resign | POST /resign | DELETE /persons/1234 ---------------------------+-------------------------------------+-------------------------- Read person | GET /readPerson?personid=1234 | GET /persons/1234 ---------------------------+-------------------------------------+-------------------------- Read person's items list | GET /readUsersItemsList?userid=1234 | GET /persons/1234/items ---------------------------+-------------------------------------+-------------------------- Add item to person's list | POST /addItemToUsersItemsList | POST /persons/1234/items ---------------------------+-------------------------------------+-------------------------- Update item | POST /modifyItem | PUT /items/456 ---------------------------+-------------------------------------+-------------------------- Delete item | POST /removeItem?itemId=456 | DELETE /items/456 ---------------------------+-------------------------------------+--------------------------
Примечания
GET /persons/1234
), тогда как RPC имеет тенденцию использовать параметры запроса для входных параметров функции GET /readPerson?personid=1234
). GET /persons?height=tall
). POST /signup
или POST /persons
, Вы включаете данные, описывающие нового человека). Это - то, как я понимаю и использую их в различных вариантах использования:
Пример: управление Ресторана
пример использования для REST: управление порядком
- create order (POST), update order (PATCH), cancel order (DELETE), retrieve order (GET)
- endpoint: /order?orderId=123
Для управления ресурсами, REST является чистым. Одна конечная точка с предопределенными действиями. Это видно способ выставить DB (Sql или NoSql) или экземпляры класса к миру.
Пример Реализации:
class order:
on_get(self, req, resp): doThis.
on_patch(self, req, resp): doThat.
Пример Платформы: Сокол для Python.
пример использования для RPC: операционное управление
- prepare ingredients: /operation/clean/kitchen
- cook the order: /operation/cook/123
- serve the order /operation/serve/123
Для аналитических, операционных, небыстро реагирующих, непредставительных, основанных на действии заданий, RPC работает лучше, и очень естественно думать функциональное.
Пример Реализации:
@route('/operation/cook/<orderId>')
def cook(orderId): doThis.
@route('/operation/serve/<orderId>')
def serve(orderId): doThat.
Пример Платформы: Фляга для python
По HTTP они оба заканчивают тем, что были всего HttpRequest
объекты, и они оба ожидают HttpResponse
объект назад. Я думаю, что можно продолжить кодировать с тем описанием и беспокойством о чем-то еще.