2013-05-28 6 views
0

Я действительно не понимаю, как должен работать этот API, поскольку я никогда раньше не работал с JSON.Помогает использовать JSON для API

Документация не дает никаких примеров, но в ней говорится, что конечные точки в этом API поддерживают операции POST и GET, возвращая JSON.

Мой вопрос, я не знаю точно, как это реализовать, скажем, я просто хочу, чтобы вытащить все данные в простой страницы, такие как это:

Город:Салем

Почтовый индекс:

и т.д ...

Я не совсем уверен, где начать с этого:

POST HTTP: // [ваш Репмана имя хоста] /api/v1/account/reputation/current.json

GET HTTP: // [ваше имя администратора] /api/v1/account/reputation/current.json

Ниже приведен список аргументов для тела POST или строки запроса GET. Все значения должны быть правильно закодированы в соответствии с обычной строкой POST или строкой запроса GET.

| Field  | Ordinality | Datatype | Description 
| pid  | 1   | string | This is your partner ID as provided by us to access the API. 
| apiKey  | 1   | string | This is your API Key as provided by use to access the API. 
| srid  | ?   | string | This is the unique RepMan ID for the account. Either this or customerId must be specified. 
| customerId | ?   | string | This is your unique customer id for the account. Either this or srid must be specified. 

Для 200 ответа, вы получите следующее содержание JSON:

{ 
account : { 
    srid  : "DW5SRB36", 
    lastName : "Morimoto", 
    pid   : "SRP", 
    customerId : null, 
    firstName : "Masaharu" 
}, 
company : { 
    city  : "New York", 
    postalZip : "10011", 
    provState : "NY", 
    name  : "Morimoto", 
    address  : "88 10th Ave" 
}, 
visibility : { 
    found  : 18, 
    missing  : 9 
}, 
reviews : { 
    1star  : 5, 
    4star  : 37, 
    3star  : 44, 
    5star  : 66, 
    2star  : 5 
}, 
competition : { 
    Restaurants in New York : { 
     Megu : 1.82, 
     Morimoto: 52.95, 
     Matsuri : 18.13, 
     Buddakan: 0.93, 
     Nobu : 26.17 
    } 
}, 
social : { 
    checkins   : 5015, 
    twitter_followers : 8154, 
    facebook_likes  : 1134 
}, 
mentions : { 
    07-09-2011 : { 
     positive : 0, 
     neutral  : 0, 
     negative : 0 
    }, 
    07-07-2011: { 
     positive : 2, 
     neutral  : 3, 
     negative : 0 
    }, 
    07-05-2011: { 
     positive : 1, 
     neutral  : 2, 
     negative : 0 
    }, 
    07-11-2011: { 
     positive : 2, 
     neutral  : 2, 
     negative : 0 
    }, 
    07-06-2011: { 
     positive : 5, 
     neutral  : 2, 
     negative : 0 
    }, 
    07-10-2011: { 
     positive : 3, 
     neutral  : 4, 
     negative : 0 
    }, 
    07-08-2011: { 
     positive : 1, 
     neutral  : 5, 
     negative : 0 
    } 
} 
} 
} 
+0

что язык, который вы используете для выполнения этого запроса? –

+0

Возможный дубликат [Как взаимодействовать с веб-интерфейсами API XML/JSON?] (Http://stackoverflow.com/questions/5503604/how-to-interface-with-web-xml-json-apis) – PleaseStand

ответ

5

Первое, что нужно попробовать это эксперимент с несколькими запросами в вашем веб-браузере. Оттуда должно быть довольно ясно, что вам нужно делать.

Начните с базового URL:

http://[your RepMan hostname]/api/v1/account/reputation/current.json 

Очевидно, что вы должны подключить в вашем имени хоста вместо [your RepMan hostname]. Оттуда добавим строку запроса. Вы видели их раньше ...они появляются после знака вопроса ? в URL-адресе и содержат пары ключ/значение в форме key1=value1&key2=value2. У вас есть 4 переменных для плагина: pid, apiKey, srid и customerId. Не зная, что это веб-сервис делает, это трудно, чтобы помочь вам знать, какие значения для подключения, но вот пример:

http://example.com/api/v1/account/reputation/current.json?pid=12345&apiKey=asdf&srid=34&customerid=98765 

вручную построить себе рабочую URL с параметрами, которые вы хотите, и попробовать его в вашем браузер. Как только вы это сделаете, вы увидите, что какая-то текстовая структура возвращается в JSON format. Это текст, совместимый с парсерами JavaScript, но на самом деле он отделен от JavaScript.

Теперь, как вы это делаете в PHP? Быстрый способ - использовать file_get_contents() и json_decode().

$response = file_get_contents('plug your URL in here'); 
$responseObject = json_decode($response); 
print_r($responseObject); 

В основном file_get_contents() будет загружать данные на этот URL, и json_decode() будет принимать текстовое представление объекта и превратить его в реальный объект PHP. Оттуда вы можете сделать echo $responseObject->social->checkins или аналогичный.

Теперь вы должны изучить использование cURL вместо file_get_contents(). Это даст вам больше контроля над запросом и даст вам более легкий доступ к кодам статуса ответа. Это будет важно, когда вы захотите установить ограничение по времени для этого запроса позже или вам придется обрабатывать сбои. Кроме того, убедитесь, что вы используете urlencode() или http_build_query() для создания строки запроса. Таким образом, reserved characters, такие как пробелы, будут преобразованы в их закодированную форму, например %20.

+1

Вы делаете Божью работа, спасибо! Это именно то, что мне нужно :) – Xhynk

+1

Если вы предпочитаете работать с вашими данными как ассоциативный массив, просто измените 'json_decode ($ response);' на 'json_decode ($ response, true);' – TecBrat

2

URL, описывает сущность:

http://[your Репмана имя хоста]/API/v1/account/репутация/current.json - Текущая репутация пользователей.

Использование HTTP GET вы можете retrive (получить) данные об одном объекте.

Использование HTTP POST вы можете представить данные (пост) в апи об объекте (обновление или создать новый объект).

Для этого просто использовать локон, как описано во многих других местах, как: php: Get url content (json) with cURL

0

Это похоже на веб-сервис на основе REST. Есть два метода HTTP API-интерфейс говорит, что вы можете использовать:

  • GET
  • POST

запросы GET находятся в URL, который может быть, например, вызывается из веб-браузера, как это:

http://host//api/v1/account/reputation/current.json?pid={some partner ID}&nextkey={next value}... 

Значок вопроса (?) Указывает начало списка параметров. Амперсанд (&) разделяет параметры. Параметры: key = value formatted.

запросы POST используют один и тот же адрес, но вместо параметров вы укутаться содержание:

http://host//api/v1/account/reputation/current.json 

Затем установите HTTP заголовок «content-type», как «application/json». Затем установите HTTP-заголовок «accept» как «application/json».

Затем, используя некоторое программное обеспечение (Apache HTTP-клиент и т.д.), создание и POST отформатированный сообщение JSON как:

{ 
    pid: "my partner ID" 
    ... 
} 

Ссылки:

http://en.wikipedia.org/wiki/Query_string

http://en.wikipedia.org/wiki/JSON

What is the difference between a HTTP-Get and HTTP-POST and why is HTTP-POST weaker in terms of security

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