Подтвердить что ты не робот

Что отличает веб-сервис REST от RPC-подобного?

У меня есть веб-приложение, которое использует AJAX для захвата данных JSON с сервера. Это требует, чтобы пользователь впервые входил в систему со своим браузером, чтобы можно было установить cookie. Используются только глаголы GET и POST, где GET предназначен для извлечения данных, а POST - для любой операции, которая изменяет данные.

Из того, что я понимаю, REST отличается от вышеуказанного метода тем, что информация аутентификации пользователя отправляется с запросом каждый, а также используются теги PUT и DELETE.

Мой вопрос: какие преимущества имеет веб-служба REST по методу RPC-типа, если конечная точка предназначена только для браузера пользователя? Я могу понять, как REST выгоден, когда клиент неизвестен, но когда я использую только jQuery-вызовы ajax, преимущества по-прежнему стоят этого по методу RPC?

4b9b3361

Ответ 1

Одно из больших различий между REST и RPC заключается в том, что REST - это все ресурсы, а RPC - больше о действиях. Например, с помощью действительно сервиса RESTful вы никогда не назовете что-то вроде http://domain.com/service/User/jason/add или http://domain.com/service/User/addUser?username=jason. С помощью службы RESTful вы ссылаетесь только на ресурс в URL-адресе, а затем определяете, что делать с этим ресурсом, используя HTTP-глаголы и тело запроса. Таким образом, запрос GET на http:/domain.com/service/jason должен вернуть информацию о ресурсе (пользователь jason). Вы можете уточнить и сказать http://domain.com/service/user/jason, но результат должен быть таким же. Если вы добавляли пользователя с именем jason, вы использовали бы тот же самый URL http://domain.com/service/user/jason, но вы использовали бы глагол PUT и тело запроса будет содержать дополнительные данные. Чтобы удалить ресурс jason, вы также должны использовать тот же самый URL (http://domain.com/service/user/jason) и использовать DELETE-глагол. Для обновления вы будете использовать глагол POST.

REST отлично подходит для публичных API, которые вы намерены использовать для других разработчиков. Их можно сделать очень стандартными, чтобы они не нуждались в тонне существующих знаний об обслуживании. Нет вызовов WSDL и т.д. Из-за безгражданства он также может сделать их более стабильными во время частичных сбоев сети.

Из того, что вы описываете, я не думаю, что вам нужен действительно RESTful-сервис. Но, возможно, вы захотите рассмотреть, если вам понадобится более стандартный API. Я сделал службу REST для проекта, который я использую только для внутреннего использования, но это потому, что я намеревался получить доступ к этой службе, возможно, к десяткам других сервисов, а в будущем, возможно, от других разработчиков. Поэтому, хотя сначала я использовал его только для нескольких проектов, конечной цели требовался более стандартный интерфейс.

Ответ 2

Подумайте об этом так: это важная функция или информация, на которую воздействует?

Когда вы имеете дело с REST, вы делятся информацией о состоянии - вы смотрите, какая текущая информация (GET), или вы изменяете этот конкретный документ (POST, DELETE) или создаете новый документ (PUT).

С RPC, это о процедурах/функциях/методах/операциях... как вы их называете на своем языке. Информация - это просто то, что работает или возвращается из службы... но это может быть один из многих. Мы можем искать и возвращать список элементов. Или мы можем что-то обсуждать, где нам нужно какое-то взаимодействие взад и вперед. (Согласование REST по большей части обрабатывается через HTTP, поэтому вам нужно делать что-то с заголовком Accept и Accept-Language). Но это более важная операция.

Затем есть третий тип, который является документом/буквальным SOAP... где это сообщение важно, и вы должны угадать, какая функция, вызываемая, основана на сообщении. Если вы просто имеете дело с CRUD-операциями, это, вероятно, все в порядке. Преимущества в REST в этом случае состоят в том, что у вас все еще может быть WSDL, поэтому вы заранее знаете, что должны посылать необходимые элементы и что ожидать взамен.

Все они работают... в основном о том, как вы думаете о проблеме, и о том, как легко конвертировать из того, что вам уже нужно, чтобы разоблачить ее как API. Если вы начинаете с нуля, вы можете делать все, что захотите. Мне лично нравится SOAP (document/lit или RPC), в котором я могу предоставить файл WSDL, который кто-то может использовать для загрузки своего клиента. У меня были случаи, когда люди делали серьезные запросы в течение нескольких часов. (объяснение некоторых абстрактных тонкостей API, таких как разница между отправкой пустой строки по сравнению с нулевым, заняло некоторое время, но у меня были бы те же проблемы с REST) ​​

Ответ 3

Лучше всего описывать REST для работы с ресурсами, где RPC больше относится к действиям.

REST означает передачу государственного представительства. Это простой способ организовать взаимодействие между независимыми системами. Приложения RESTful используют HTTP-запросы для публикации данных (создания и/или обновления), чтения данных (например, создания запросов) и удаления данных. Таким образом, REST использует HTTP для всех четырех операций CRUD (Create/Read/Update/Delete).

RPC: RPC в основном используется для связи через разные модули для обслуживания пользовательских запросов. например В openstack, например, как nova, glance и нейтроны работают вместе при загрузке виртуальной машины.

REST/RPC:

В качестве подхода к программированию REST представляет собой легкую альтернативу веб-службам и RPC. Подобно веб-службам, служба REST:

  • Независимо от платформы (вам все равно, является ли сервер Unix, клиент Mac или что-то еще),
  • Не зависит от языка (С# может разговаривать с Java и т.д.),
  • Стандартно (работает поверх HTTP) и
  • Можно легко использовать в присутствии брандмауэров.

Ответ 4

Вы правы в том, что REST меньше связан с вызывающим объектом - если вы сравниваете с веб-службой SOAP, для которой требуется вызывать WSDL файл с сервера, чем да, веб-службы REST менее связаны (т.е. не требуют знание веб-сервиса до его вызова). И большую часть времени токен должен быть передан вместе с запросом на заданное "представление".

Я не думаю, что существует огромная выгода от использования REST из ajax, фактически, в зависимости от API, с которым вы имеете дело, вам может потребоваться токен, который передается как параметр URI (параметр querystring) при использовании Веб-сервис на основе SOAP, это необязательно. На самом деле довольно просто объединить веб-службы SOAP с аякс-звонками, передать ваши данные в формате JSON и десериализовать JSON в объект на стороне сервера. И в довершение всего, jQuery делает все это супер-легким.

Ответ 5

Ненавижу, чтобы разбить его всем вам. RPC делает локальный вызов, который абстрагирует подстилающий пульт дистанционного управления поведение. и угадай что? делать REST - это одно и то же. аргумент о REST о ресурсах неверен, вы на самом деле непосредственно вызывать действия.

Я утверждаю, что REST через HTTP с jsons является формой RPC.

другой популярный RPC может включать SOAP, например