Nosso cliente me deu uma API REST para a qual eu preciso fazer uma chamada PHP. Mas, na verdade, a documentação fornecida com a API é muito limitada, então eu realmente não sei como chamar o serviço.
Eu tentei pesquisar no Google, mas a única coisa que surgiu foi um Yahoo! já expirado tutorial sobre como chamar o serviço. Sem mencionar os cabeçalhos ou qualquer coisa em informações detalhadas.
Existe alguma informação decente sobre como chamar uma API REST ou alguma documentação sobre isso? Porque mesmo no W3schools, eles descrevem apenas o método SOAP. Quais são as opções diferentes para criar a API de descanso no PHP?
fonte
$data
é uma matriz associativa (data [nome_do_campo] = valor) que mantém os dados enviados para o método api.curl_close
função não é chamada, o que poderia causar consumo extra de memória se a função CallAPI for chamada repetidamente.Se você tem um URL e seu php suporta, você pode simplesmente chamar file_get_contents:
se $ response for JSON, use json_decode para transformá-lo em matriz php:
se $ response for XML, use a classe simple_xml:
http://sg2.php.net/manual/en/simplexml.examples-basic.php
fonte
file_get_contents
função falhará com um aviso e retornará nulo. Se o corpo contiver uma mensagem de erro, você não poderá recuperá-la.Use Guzzle . É um "cliente HTTP PHP que facilita o trabalho com HTTP / 1.1 e elimina o trabalho de consumir serviços da Web". Trabalhar com o Guzzle é muito mais fácil do que trabalhar com o cURL.
Aqui está um exemplo do site:
fonte
CURL é o caminho mais simples a seguir. Aqui está uma chamada simples
fonte
Use HTTPFUL
Httpful é uma biblioteca PHP simples, encadeada e legível, destinada a tornar o HTTP de fala saudável. Ele permite que o desenvolvedor se concentre em interagir com APIs em vez de examinar as páginas curl set_opt e é um cliente PHP REST ideal.
Httpful inclui ...
Ex.
Envie uma solicitação GET. Obtenha resposta JSON analisada automaticamente.
A biblioteca observa o JSON Content-Type na resposta e analisa automaticamente a resposta em um objeto PHP nativo.
fonte
$condition = $response->weather[0]->main;
menos que eu esteja apenas fazendo o lado errado do PHPVocê precisará saber se a API REST que você está chamando suporta
GET
ouPOST
ou ambos os métodos. O código abaixo é algo que funciona para mim, estou chamando minha própria API de serviço da web, então já sei o que a API precisa e o que ela retornará. Ele suporta os métodosGET
ePOST
, para que as informações menos sensíveis sejam inseridas noURL (GET)
e as informações como nome de usuário e senha sejam enviadas comoPOST
variáveis. Além disso, tudo passa pelaHTTPS
conexão.Dentro do código da API, codifico uma matriz que quero retornar para o formato json e, em seguida, basta usar o comando PHP
echo $my_json_variable
para tornar essa cadeia json disponível para o cliente.Como você pode ver, minha API retorna dados json, mas você precisa saber (ou examinar os dados retornados para descobrir) em qual formato está a resposta da API.
É assim que eu me conecto à API do lado do cliente:
BTW, eu também tentei usar o
file_get_contents()
método como alguns dos usuários sugeriram aqui, mas isso não funcionou bem para mim. Descobri que ocurl
método era mais rápido e mais confiável.fonte
Na verdade, existem muitos clientes. Um deles é Pest - confira isso. E lembre-se de que essas chamadas REST são simples solicitações http com vários métodos: GET, POST, PUT e DELETE.
fonte
Você pode usar
file_get_contents
para emitir qualquerPOST/PUT/DELETE/OPTIONS/HEAD
método http , além doGET
método como o nome da função sugere.Como postar dados em PHP usando file_get_contents?
fonte
Se você estiver usando o Symfony, há um ótimo pacote de clientes de descanso que inclui até todas as ~ 100 exceções e as lança em vez de retornar algum código de erro + mensagem sem sentido.
Você realmente deve verificar: https://github.com/CircleOfNice/CiRestClientBundle
Eu amo a interface:
Funciona para todos os métodos http.
fonte
como @Christoph Winkler mencionou, esta é uma classe base para alcançá-lo:
curl_helper.php
Então você sempre pode incluir o arquivo e usá-lo, por exemplo: any.php
fonte
Se você estiver aberto para usar ferramentas de terceiros, consulte esta: https://github.com/CircleOfNice/DoctrineRestDriver
Essa é uma maneira completamente nova de trabalhar com APIs.
Primeiro, defina uma entidade que esteja definindo a estrutura dos dados recebidos e recebidos e faça anotações com fontes de dados:
Agora é muito fácil se comunicar com a API REST:
fonte
Você pode usar o POSTMAN, um aplicativo que facilita as APIs. Preencha os campos da solicitação e, em seguida, ele gerará código para você em diferentes idiomas. Basta clicar no código no lado direito e selecionar seu idioma preferido.
fonte