2011-01-01 4 views
3

Мне нужно реализовать веб-API для проекта, над которым я работаю в этот период. Я читал, что для этого есть много стандартных протоколов: XML-RPC, SOAP, REST. По-видимому, XML-RPC один из самых простых в реализации и использовании из того, что я видел, но я не нашел ничего об использовании его для реализации API. Вместо этого я нашел много учебников о создании REST API в PHP, например. Существует ли какая-либо контр-индикация для использования XML-RPC для реализации общедоступного веб-API?Используется ли XML-RPC как протокол для реализации публичного API?

Кроме того, в общем, я мог (вроде) определить собственный протокол для моего API, чтобы упростить работу (т. Е. Принять только запрос GET, содержащий нужные мне параметры): было бы это так плохо? Является ли использование стандартного протокола обязательным?

ответ

1

Если ваше приложение очень простое, тогда нет ничего плохого в простом использовании запросов GET и передаче параметров. Вам не нужно использовать какой-то стандарт, например SOAP.

Технически вы использовали бы REST, если то, что вы отправляете, является объектами. Например, если у вас есть объекты домена, которые вы хотите транспортировать, их можно получить через GET, обновленный через PUT через стандартный URL. Хотя многие люди относятся к первому варианту выше как отдых, это не совсем правильно.

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

Кажется, что JSON сейчас захватывает мир. Он компактный, быстрый для синтаксического анализа и идеально подходит для веб-приложений, поскольку вы можете напрямую его транслировать в javascript. Вы можете очень быстро использовать HTTP GET, который возвращает JSON.

+0

Какая жалость - не вождение и большая сеть компания и использование SOAP ... Шутка обособленно, я думаю, что это разница между «Большими веб-компаниями», конечными пользователями которых в основном являются люди, такие как вы и я, и бизнес B2B. Здесь используется SOAP. – mtraut

+0

> Вы можете получить очень далеко, просто используя HTTP GET, который возвращает JSON. Это то, что я делал до сих пор, прежде чем начинать спрашивать себя, является ли это хорошим решением или нет. Как вы думаете, это может быть использовано в реальном приложении? –

+0

Я использую HTTP GET с JSON в качестве протокола в реальных приложениях все время. Мой нынешний работодатель использует это почти исключительно. – monkjack

0

Почему бы просто не использовать SOAP, который намного проще реализовать на многих платформах.

Возможно, если вы используете платформу без поддержки SOAP, возможно, будет проще использовать XML-RPC. Но тогда большинство платформ не поддерживают XML-RPC.

Протокол SOAP основан на XML-RPC, что в значительной степени упростило XML-RPC.

0

Чтобы ответить на ваш вопрос, я думаю, что SOAP или RESTful API будут лучше всего реализованы, так как потребители вашего API, скорее всего, будут иметь больше опыта с ними.

Кроме того, ваш последний бит, где вы говорите о принятии запросов на получение с определенными параметрами, является очень большой частью проектирования RESTful API. Если вы считаете, что это будет легко реализовать, я настоятельно рекомендую вам провести некоторое исследование по созданию RESTful API на выбранном вами языке, потому что я думаю, вы найдете его очень близким к альтернативному решению, которое вы предложили.

+0

Да, я немного читал о REST, но, возможно, мне что-то не хватает, так как я нашел простые запросы GET/POST более простыми и простыми в использовании. Я думаю, что я прочитаю немного больше об этом, и посмотрю, получу ли я просветленный –

0

Наше приложение предоставляет все три протокола

  • Plain HTTP
  • XML RPC
  • SOAP

Из нашего опыта начинающий или ресурс ориентированный пользователь использует обычный HTTP. Некоторые (не многие) решили использовать XML RPC. В основном, когда они новы к теме и не имеют много API-интерфейсов. Высокие конечные пользователи и технологически любящие идут на SOAP.

Я думаю, что дни XML-RPC закончились. Либо отправляйтесь на простой HTTP-протокол POST (который я предпочитаю, если вы можете определить чистую подпись службы, хорошие кандидаты - это те, которые имеют только примитивные типы, нет реального смысла объектов) или выберите SOAP, если вы не ограничены ресурсами.

Я бы предпочел даже «новые», такие как JSON RPC поверх XML RPC. JSON может быть хорошим выбором, если вам нужны более простые примитивные сигнатуры параметров.

+0

Из интереса, в чем преимущества поддержки 3-х протоколов. – monkjack

+1

Бизнес-функция нашего инструмента часто является одним шагом в рабочем процессе, поэтому она интегрируется практически на каждом сайте, который мы занимаемся бизнесом. И каждый сайт имеет разные ноу-хау и инструменты. И, в конце концов, на самом деле не так много усилий, чтобы иметь разные протокольные адаптеры, если ваш проект подготовлен. – mtraut

0

Недостатки будут заключаться в том, что вы будете определять свою собственную семантику для работы с ресурсами (которые ваши разработчики должны будут изучить), когда вы сможете использовать уже существующие операции.

HTTP определяет операции/действия/глаголы, которые могут использоваться. Если вы используете это, вы можете предоставить единый интерфейс, который пользователи api могут вызывать, не будучи вынужденным изучать ваши новые планы.

Это позволит вам получить одно из полезных ограничений в REST.

0

Хорошо. Я должен был сделать приложение для андроида magento для компании и был смущен между тремя SOAP, REST и XML-RPC, в конечном итоге пошел с XML RPC - действительно удивительным и простым: D

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