Ajudando o uso do JSON para uma API

Eu realmente não entendo como esta API deve funcionar, já que nunca trabalhei com a JSON.

A documentação não fornece nenhum exemplo, mas diz que os pontos finais desta API suportam as operações POST e GET, retornando JSON.

Minha pergunta é: não tenho certeza exatamente como implementar isso, digamos que eu só quero puxar todos os dados para uma página simples, como esta:

Cidade: Salem

CEP: 97302

etc …

Não tenho certeza sobre por onde começar com isso:

POST http: // [seu nome de host RepMan] /api/v1/account/reputation/current.json

GET http: // [seu nome de host RepMan] /api/v1/account/reputation/current.json

A seguir, uma lista de argumentos para o corpo POST ou a cadeia de consulta GET. Todos os valores devem ser codificados corretamente de acordo com um corpo POST normal ou seqüência de consulta 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. 

Para uma resposta de 200, você receberá o seguinte conteúdo 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 } } } } 

A primeira coisa a tentar é experimentar alguns pedidos no seu navegador. De lá, deve ser bem claro o que você precisa fazer.

Comece com seu URL base:

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

Obviamente, você terá que ligar seu nome de host no lugar de [your RepMan hostname] . De lá, vamos adicionar uma string de consulta. Você já viu isso antes … eles vieram após o ponto de interrogação ? no URL e conter pares de chave / valor na forma de key1=value1&key2=value2 . Você tem 4 variables ​​para o plugin: pid , apiKey , srid e customerId . Sem saber o que faz esse serviço na web, é difícil ajudá-lo a saber quais valores se conectam, mas aqui está um exemplo:

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

Crie manualmente um URL de trabalho com os parâmetros desejados e tente-o no seu navegador. Depois de ter feito isso, você verá uma nova estrutura de texto voltar no formato JSON . Este é um texto compatível com analisadores de JavaScript, mas, de fato, é separado do JavaScript.

Agora, como você faz isso em PHP? Uma maneira rápida é usar file_get_contents() e json_decode() .

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

Basicamente, file_get_contents() irá carregar os dados nesse URL e json_decode() levará a representação de texto do object e transformá-lo em um verdadeiro object PHP. A partir daí você poderia fazer echo $responseObject->social->checkins ou similar.

Agora, você deve procurar o uso de cURL em vez de file_get_contents() . Isso lhe dará mais controle sobre o pedido e lhe dará access mais fácil aos códigos de status da resposta. Isso será importante quando você quiser definir um limite de tempo nesse pedido mais tarde, ou precisar lidar com falhas. Além disso, certifique-se de usar urlencode() ou http_build_query() para criar sua string de consulta. Dessa forma, caracteres reservados , como espaços, serão convertidos em sua forma codificada, como %20 .

O URL descreve a entidade:

http: // [seu nome de host RepMan] /api/v1/account/reputation/current.json – A reputação atual dos usuários .

Usando HTTP GET você pode recuperar dados (obter) sobre uma entidade.

Usando HTTP POST você pode enviar (postar) dados para o api sobre uma entidade (atualizar ou criar uma nova entidade).

Para fazer isso, use apenas curl, como explicado em muitos outros lugares, como: php: Obter conteúdo url (json) com cURL

Isso parece um serviço web baseado em REST. Existem dois methods HTTP que a API diz que você pode usar:

  • OBTER
  • POSTAR

Os pedidos GET estão em um URL que pode ser, por exemplo, chamado a partir de um navegador da Web como este:

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

O ponto de interrogação (?) Indica o início da lista de parâmetros. Ampersand (&) separa os parâmetros. Os parâmetros são chave = valor formatado.

Os pedidos POST usam o mesmo URL, mas em vez de parâmetros que agrupam o conteúdo:

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

Em seguida, defina o header HTTP ” content-type ” como ” application/json “. Em seguida, defina o header HTTP ” accept ” como ” application/json “.

Em seguida, usando algum software (cliente Apache HTTP, etc.), crie e POSTE uma mensagem formatada JSON como:

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

Referências:

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

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

Qual é a diferença entre um HTTP-Get e HTTP-POST e por que o HTTP-POST é mais fraco em termos de segurança