2009-08-19 2 views
3

Я пробовал поиск, но не могу понять, как получить доступ к данным через интерфейс RESTful. Я ищу только пример кода, который показывает, что кто-то получает доступ к некоторым данным из некоторого воображаемого веб-сервиса, используя его API. Было бы полезно простое объяснение «как это работает».Как вы используете RESTful API от PHP?

+0

Вы уверены, что искали? REST довольно хорошо документирован ... – Jason

+0

@Jason наоборот, сеть затоплена с неточной и вводящей в заблуждение документацией REST. У меня проблемы с поиском точных источников. – aehlke

ответ

2

Вид горячей темы. Ожидайте взрыв ответов;)

REST работает по принципу использования методов HTTP-запросов для определения действия приложения (сервера REST) ​​на объект. Обычно используются 4 метода HTTP: GET, POST, PUT и DELETE.

Скажем, например, объект, о котором идет речь, является пользовательскими данными. URL-адрес REST может выглядеть примерно так: http://mydomain.com/services/user

Если бы мы хотели получить информацию о существующем пользователе, вы могли бы GET http://mydomain.com/services/user/someuserid.

Если мы хотим создать пользователя, вы должны использовать POST http://mydomain.com/services/user, а тело запроса будет содержать информацию пользователя.

Если бы мы хотели изменить информацию о пользователе, вы бы использовали PUT http://mydomain.com/services/user/someuserid. Опять же, тело запроса будет содержать новую информацию пользователя.

Если мы хотим, чтобы удалить пользователя, вы бы использовали DELETE http://mydomain.com/services/user/someuserid

В итоге, 4 различные методы HTTP, как правило, эти значения, но могут отличаться от сервера к серверу, в зависимости от того, как RESTful это:

  • GET == получить, принеси, извлекать и другие синонимы
  • POST == создавать, добавлять
  • PUT == изменения, изменить
  • DELETE == удалить, удалить
+0

-1: Джастин, ему нужна помощь в том, как _use_ RESTful API. –

+1

Прежде всего, следите за своим языком. Я отметил ваш комментарий. Во-вторых, сообщение может быть «полезным», но поскольку вопрос касался «использования RESTful API», и ответ о «что такое RESTful API», я думаю, должно быть ясно, что это полезный ответ на другой вопрос. –

+1

-1 Это явно RPC, происходит так много сцеплений. Нет ничего ОТДЫХА об этом. – aehlke

0

http://oreilly.com/catalog/9780596529260/

Глава 2 и 11 - пример кода на сайте.

+0

-1: не просто отправьте ссылку. –

+0

+1: отправка ссылки в порядке, если она направляет вас в правильном направлении. У меня было много ответов, разрешенных простой ссылкой. – Jason

+0

См. Http://meta.stackexchange.com/questions/7515/why-is-linking-bad/7519#7519, а также многие другие мета-дискуссии по этой теме. –

-1

Если вы искали опыт, похожий на то, что получаете с помощью службы на основе SOAP, и «Добавить ссылку на службу» или «Добавить веб-ссылку», вы не найдете ее. Службы на основе REST настолько легки, что инструменты не нужны.

Вы просто используете класс WebRequest для POST или GET из сервиса. Вы создадите XML для отправки, используя LINQ to XML или XML Serialization, или что-то еще, что вам нравится. Когда ответ вернется, вы проанализируете его, как и любой другой XML.

В качестве примера см. «A REST Client Library for .NET, Part 1» (извините, нет части 2).

+0

голосующие люди, чтобы продвигать свой собственный ответ и ссылку на ваш сайт, не помогают вашему делу, независимо от того, насколько вы правы. – Jason

+0

Если бы вы были правы по поводу причины, по которой я их проголосовал, я бы чувствовал себя плохо. Однако, поскольку я проголосовал за них, потому что они не обсуждали, как использовать _use_ RESTful API, я не чувствую себя так плохо. У меня также нет удобного URL-адреса для любого другого примера _using_ API RESTful, поэтому я сломался и использовал URL-адрес для своей «части 1», несмотря на смущающий факт, что нет части 2.Нет, я чувствую себя хорошо сейчас ... –

+0

Вы пропустили часть о том, что клиент зависит от типа содержимого ответов для выбора способа анализа документов. – aehlke

1

Проверьте Sun Cloud API. AFAIK является первым (и все еще одним из) API-интерфейсов для охвата ограничения hypermedia as the engine of application state (HATEOAS) в его разработке и документации. Это, казалось бы, небольшое ограничение оказывается одной из центральных идей REST, и в течение последних нескольких лет оно последовательно игнорировалось.

Документация Sun Cloud содержит несколько хороших примеров образцов запросов, ответов и типов медиатекста, на которые распространяются гипертексты.

+0

-1: API Sun отвечает на вопрос о том, как использовать _use_ REST API? –

+0

+1, поскольку предоставленная ссылка содержит примеры того, как использовать свой REST API. – Jason

+0

Я только что проверил эту ссылку. Это ссылка на всю спецификацию API. Если бы ссылка была на _usage_, я бы не проголосовал. Ссылка отвечает на вопрос так же, как ссылка на словарь отвечает на вопрос «что такое документация?». Если Rich должен был добавить ссылку на использование части этого API, я бы удалил downvote. –

3

Вот несколько псевдокодов, которые я только что использовал для ответа на аналогичный вопрос.

Общий поток любой основе HTTP RESTful клиента запрос должен идти что-то вроде этого:

  1. сделать HTTP GET на корневой URL в API.
  2. Проведите анализ на основе типа носителя , указанного в заголовке http «Тип содержимого».
  3. Отвечает ли ответ на мой вопрос?
  4. Если да, то извлеките информацию и сделайте то, что вы хотите.
  5. Если нет, тогда ответ содержит ссылку на другой ресурс , который может иметь ответ на мой вопрос .
  6. Если да, то сделайте HTTP GET или POST на , эта ссылка основана на том, что говорит вам определение типа . Перейти к шагу 3.
  7. Если нет, остановите поиск и сообщите пользователю , что вы не можете найти ответ.
+0

Даррел, это похоже на довольно недетерминированный способ делать что-то, особенно если важно получить ответ. В нем возникают такие вопросы, как «где документируются типы средств массовой информации», «они документированы однозначно» и «как узнать, может ли ресурс ответить на мой вопрос». Возможно, одно дело сказать пользователю «нет», но другое, если какая-то бизнес-операция потерпит неудачу, потому что я достиг седьмого шага, и я должен объяснить, почему. –

+0

Важно, чтобы код клиента понимал медиа-тип, поэтому почему мне нужно «где» документируются типы носителей? Клиент будет точно реагировать на свой код обработки мультимедийного типа, независимо от того, неоднозначно ли документирован тип носителя, не имеет значения, «как вы используете API RESTful». Если клиент понимает тип медиафайла и знает, что он ищет, он должен знать, содержит ли медиа-тип информацию. Если бизнес-операция запрашивает ресурс, который не существует, я бы ожидал, что система сможет справиться с этим сценарием. –

+0

Даррелл, сценарий, о котором я думаю, заключается в том, что у меня есть проблема с бизнесом, и мне сказали использовать определенный API RESTful для его решения. Мне интересно, как типы документов документируются, поэтому я знаю, когда понял интерфейсы, возвращаемые службой. –

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