Como executar a tecnologia do DESCANSO
Há dois lados a este tale, o primeiro é como
gerar pedidos legitimate do DESCANSO, e o segundo é como segurar
corretamente as respostas.
Gerando Pedidos
Quando vem a gerar o pedido, você tem três
opções principais. Primeiramente, você pode gerar o pedido
manualmente, usando o encabeçamento de PHP funciona. Isto
dá-lhe a flexibilidade completa em gerar o pedido, mas envolve a
maioria de coding. Em segundo, você pode usar uma de funções
internas do pedido de PHP tais como o file_get_contents() ou
file()/fopen(), fread(), e fclose(). Com este método, os muitos
da informação detalhada são segurados automaticamente por PHP, e
você recebe a mesma resposta. Finalmente, você pode usar uma
classe feita sob encomenda projetada ser usado com o API na pergunta.
Geralmente estas classes não requerem nada mais do que a lista
do parâmetro, e retornarão os resultados no formulário de um objeto
feito sob encomenda ou fá-los-ão acessíveis através de uma classe.
Geração Manual
Gerar pedidos é manualmente somente complicado a
primeira vez, após o esse, código-reúso e o pontapé da
modularidade dentro. Conceptual a função que gerará o pedido
é consideravelmente básica. Primeiramente, todos os
parâmetros do pedido são preparados para assegurar a transmissão
apropriada. Em seguida, o URL para o endpoint é gerado,
analisado gramaticalmente então e quebrado acima em suas peças
componentes. Finalmente, o pedido próprio é emitido usando os
soquetes:
functioncallapi($endpoint, #,
#, #, #)
{
$action = urlencode($action);
$type = urlencode($type);
$keyword = urlencode($keyword);
Três dos parâmetros passados são URL codificados.
Isto é necessário para assegurá-los é passado corretamente
sobre o URL. No exemplo precedente, uma busca para o "estilo"
foi executada; se a busca fosse preferivelmente do "livro
estilo," o espaço requereria o encoding, tendo por resultado
style%20book. Eu negligenciei codificar as variáveis do devkey,
confiando em que a autoridade emitindo fêz exame de como seria usada
na consideração ao as criar.
$url =
$endpoint."?devkey=$devkey&action=$action&type=$type&keyword=$keyword";
$url_info = parse_url($url);
$host = # ' ];
$path = # ' ]. "?" pergunta‘de.$url_info[ ' ];
$data = "";
O URL próprio é gerado aqui, including os parâmetros
agora URL-CODIFICADOS. O URL necessita ser deconstructed para
baixo a suas peças componentes para o uso na conexão crua do
soquete.
#, 80);
fputs($fp, "BORNE". "HTTP/1.1\r\n de $path");
fputs($fp, "anfitrião: ". #
");
fputs($fp, "aceitam: */* \r\n");
fputs($fp, "Accept-Charset:ISO-8859-1, utf-8;q=0.7,
*;q=0.7\r\n");
fputs($fp, "Connection:close\r\n");
fputs($fp,
"Content-Type:application/x-www-form-urlencoded\r\n");
fputs($fp, "Índice-Comprimento: ".strlen($data).
"\r\n\r\n");
fputs($fp, "# ");
A informação gerada pelo código precedente é emitida
aqui finalmente. A primeira linha do fputs() emite o trajeto ao
original pedido, e a segunda linha especifica o anfitrião desejado.
# = "";
while(!feof($fp))
{
#, 128);
}
fclose($fp);
list($http_headers, $http_content)=explode("\r\n\r\n",
#);
retorno #;
}
Finalmente, a resposta é recuperada e o índice
da resposta é retornado. Você aprende como segurar respostas
nas seções que tratam desse lado das coisas logo.
Geração Rápida
Utilizando funções internas da lima de PHP, o
mesmo processo pode ser terminado com muito menos código (embora
você tem menos flexibilidade). Conceptual esta função
trabalha o mesmo que precedente, a não ser que todas as chamadas do
soquete da lima sejam substituídas com a uma chamada ao
file_get_contents():
functioncallapiquick($endpoint, #,
#, #, #)
{
$action = urlencode($action);
$type = urlencode($type);
$keyword = urlencode($keyword);
$url =
$endpoint."?devkey=$devkey&action=$action&type=$type&keyword=$keyword";
$response = @file_get_contents($url);
retorno #;
}
Não há realmente muito a explicar com este
exemplo. O encoding do URL foi discutido previamente, e a única
chamada do file_get_contents() segura toda a mágica. O
ampersand na frente da ligação de controle é usado suprimir todos
os avisos que puderem se levantar de uma lima ou de um URL
inexistente, porque estes devem ser segurados pela função de chamada
(file_get_contents() retornarão falso nestes exemplos). Nos
ambientes pre-PHP5 você necessitará usar o fopen() em vez do
file_get_contents(). Alguma flexibilidade é perdida com este
tipo do pedido, porque você pode não mais por muito tempo ajustar os
encabeçamentos feitos sob encomenda ou os encabeçamentos opcionais,
que podem ser requeridos ou muito desejável dependendo do API com que
você está interagindo.
Ferramentas Automatizadas
Enquanto a popularidade da correia fotorreceptora
presta serviços de manutenção os aumentos, assim que querem o
prevalence de classes do prebuilt segurar o trabalho sujo realmente da
interação com o usuário. Se o serviço que você quer
interagir com tiver uma classe disponível, ele for definitivamente
worth olhar em. Alcançar a classe naturalmente será dependente
da classe própria. Deve vir com documentação suficiente, e o
acesso provavelmente não diferirá demasiado dos exemplos mais
adiantados — apenas com pouco mais verificar de erro (você
esperança). Algo manter-se na mente é que muitos módulos do
prebuilt estão desenvolvidos e mantidos por terceiros partidos, e
como tais você puderam ter que esperar um quando depois que as
características novas são liberadas no API para que se tornem
disponíveis com sua classe.
Segurando a resposta
Como você trata da resposta depende de que
método de o emitir ao pedido escolha. Se você gerar o pedido
ou manualmente ou com o dae (dispositivo automático de entrada) de
uma de funções internas de PHP (como o file_get_contents()) você
necessitará também segurar manualmente a resposta. Se você
usar um módulo third-party, terá sua própria relação para
recuperar resultados.
Manualmente analisando gramaticalmente a resposta
A resposta forneceu pelo usuário deve ser um
original de XML; felizmente, XML foi projetado ser fácil de
analisar gramaticalmente. Infelizmente, não importa como foi
projetado, manualmente analisar gramaticalmente qualquer coisa não é
geralmente muitos do divertimento. PHP5 vem com SimpleXML, que
faz a manipulação de originais de XML uma brisa. Os usuários
PHP4 não têm SimpleXML; entretanto, alguns módulos
third-party como MiniXML estão disponíveis que execute funções
similares.
Uma vez que você recebeu a resposta, furá-la em um
objeto de SimpleXML deve ser uma brisa. Usando o exemplo da
biblioteca e a função precedentes do pedido, você termina acima com
algo como este:
# =
callAPIQuick('http://library.example.com/api.php ', ' 123', ' busca
',
' livro ',‘estilo ');
if($response)
{
$xml = simplexml_load_string($response);
print_r($xml);
}else
{
eco do "alimentação do carregamento erro";
}
Aqui, a resposta não é falsa (e daqui algo,
presumably o XML que você esperava para, foi retornado). Anote
que esta suposição é geralmente válida bonito. Quando um
usuário que fornece um API encontra um erro, deve fornecer o erro em
um formato agradável de XML. A função do
simplexml_load_string() faz exame da resposta e gira-a em um objeto de
XML que possa diretamente ser alcançado, iterado completamente, e
assim por diante. Finalmente, a função do print_r() resulta em
uma saída user-friendly que mostra os índices do objeto, mostrados
aqui:
Objeto De SimpleXMLElement
(
[ Pedido ] = > Objeto De SimpleXMLElement
(
[ RequestId ] = > 123a456
[ Parâmetros ] = > Objeto De SimpleXMLElement
(
[ Argumento ] = > Disposição
(
[ 0 ] = > Objeto De SimpleXMLElement
(
)
[ 1 ] = > Objeto De SimpleXMLElement
(
)
[ 2 ] = > Objeto De SimpleXMLElement
(
)
[ 3 ] = > Objeto De SimpleXMLElement
(
)
)
)
)
[ Resposta ] = > Objeto De SimpleXMLElement
(
[ ResultCount ] = > 2
[ Artigo ] = > Disposição
(
[ 0 ] = > Objeto De SimpleXMLElement
(
[ Título ] = > Livro Vol 1 Do Estilo
[ Status ] = > Para fora
[ preensões ] = > 3
[ CopiesOnHand ] = > 2
[ Autor ] = > Corça De Jon
)
[ 1 ] = > Objeto De SimpleXMLElement
(
[ Título ] = > Livro Vol 2 Do Estilo
[ Status ] = > Dentro
[ preensões ] = > 0
[ CopiesOnHand ] = > 1
[ Autor ] = > Corça De Jon
)
)
)
)
Olhando essa saída, as coisas de um par devem
ser imediatamente óbvias:
-
SimpleXML faz muitos de coisas realmente úteis para você
muito rapidamente.
-
Os objetos resultantes não indicam atributos (veja a
lista do argumento sob parâmetros). Os dados estão dentro lá,
ele não são mostrados apenas com um print_r().
-
As disposições começam contar em 0 (apenas como em toda
parte mais em PHP, é justo algo se manter na mente).
-
A disposição do artigo é implorar justo a ser segurado
com um laço do foreach().
Carregando toda essa informação na mente, um par de
linhas rápidas do código é tudo que é requerido para explorar mais
inteiramente o índice.
eco "que você procurarou por: {#
request->parameters->argument[3]->value}<br>> ";
o eco "é aqui seu {# response->resultcount>}
results<br >";
foreach($xml->Response->Item COMO &$item)
{
ecoe "{# title>} perto {#
author}<br>>";
}
Aqui a contagem da pergunta e do resultado da
busca é apresentada, e os resultados eles mesmos são iterados então
completamente. A sintaxe começa um pouco estranho quando tratar
das disposições (como demonstrado quando a pergunta da busca está
imprimida), assim que do ele é frequentemente sensible iterar com
elas para maior clareza.
O DESCANSO é um método eficaz de perguntar APIs remoto
quando é permissível para a parcela do pedido de sua transação
ocorrer no espaço livre. Criar perguntas do DESCANSO é tão
fácil quanto URL-CODIFICANDO os parâmetros requeridos e especificar
um endpoint para a chamada. Tratar das respostas do DESCANSO
pode ser um pouco mais complicado; entretanto, por ferramentas
leveraging goste de SimpleXML, ele demasiado pode ser terminado
rapidamente.
este é um artigo adicionado por Emanuela Hedrick
Disclaimer: Nosso Web site
não é responsável para a informação contida por este artigo.
Este artigo em nenhuma maneira reflete as vistas, as opiniões,
os pensamentos ou a opinião da equipe de funcionários do diretório
dos artigos.
Observação da tradução: O artigo
"como executar a tecnologia do DESCANSO" foi traduzido usando um
serviço de tradução automatizado. Nós desculpamo-nos
sincerely por todos os erros da tradução que ocorram. Obrigado
compreendendo.
|