Web Services em PHP APIs para a web moderna Lorna Jane Mitchell Novatec Authorized Portuguese translation of the English edition of titled PHP Web Services, ISBN 9781449356569 © 2013 Lorna Jane Mitchell. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra PHP Web Services, ISBN 9781449356569 © 2013 Lorna Jane Mitchell. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. [2013]. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Lúcia Ayako Kinoshita Revisão técnica: Aurelio Jargas Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-369-7 Histórico de impressões: Junho/2013 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 E-mail: [email protected] Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec VC20130610 Sumário Prefácio...................................................................................................................9 Capítulo 1 ■ HTTP...................................................................................................14 Clientes e servidores................................................................................. 17 Fazendo solicitações HTTP......................................................................18 Curl...................................................................................................18 Ferramentas para navegadores............................................................. 21 PHP...................................................................................................23 Capítulo 2 ■ Verbos HTTP........................................................................................27 Fazendo solicitações GET.........................................................................27 Fazendo solicitações POST.......................................................................30 Usando outros verbos HTTP....................................................................33 Capítulo 3 ■ Cabeçalhos..........................................................................................36 Cabeçalhos de solicitação e de resposta.....................................................37 Cabeçalhos HTTP comuns.......................................................................38 User-Agent.........................................................................................38 Cabeçalhos para negociação de conteúdo.............................................40 Garantindo a segurança das solicitações com o cabeçalho Authorization....45 Cabeçalhos customizados.........................................................................47 Capítulo 4 ■ Cookies................................................................................................49 Mecanismos dos cookies..........................................................................49 Trabalhando com cookies no PHP............................................................52 Capítulo 5 ■ JSON....................................................................................................54 Quando optar pelo JSON.........................................................................55 Lidando com JSON no PHP.....................................................................56 JSON em APIs existentes..........................................................................58 5 6 Web Services em PHP Capítulo 6 ■ XML.....................................................................................................61 Quando optar pelo XML..........................................................................63 XML no PHP...........................................................................................64 XML em APIs existentes...........................................................................64 Capítulo 7 ■ Serviços RPC e SOAP.............................................................................68 RPC....................................................................................................... 68 SOAP...................................................................................................... 71 WSDL................................................................................................72 Cliente SOAP em PHP........................................................................73 Servidor SOAP em PHP...................................................................... 74 Gerando um arquivo WSDL a partir do PHP........................................75 Cliente e servidor em PHP usando WSDL............................................78 Capítulo 8 ■ REST....................................................................................................79 URLs RESTful.........................................................................................80 Estrutura de recursos e hipermídia........................................................... 81 Tipos de dado e de mídia.........................................................................85 Recursos do HTTP em REST................................................................... 86 Criar recursos.....................................................................................87 Ler registros....................................................................................... 88 Atualizar registros...............................................................................89 Apagar registros................................................................................. 90 Cabeçalhos adicionais em serviços RESTful............................................. 90 Cabeçalhos de autorização.................................................................. 91 Cabeçalhos para caching.....................................................................92 RESTful versus utilidade..........................................................................94 Capítulo 9 ■ Depurando web services......................................................................95 Saída para depuração.............................................................................. 96 Geração de log.........................................................................................97 Depurando de fora de seu aplicativo.........................................................99 Wireshark.........................................................................................100 Charles Proxy................................................................................... 103 Encontrando a ferramenta ideal.............................................................. 107 Sumário Capítulo 10 ■ Tomando decisões sobre design de serviços......................................108 Decisões sobre o tipo de serviço.............................................................. 109 Considere os formatos de dados..............................................................110 Experiências customizáveis...................................................................... 111 Defina o comportamento padrão.............................................................113 Capítulo 11 ■ Criando um serviço robusto..............................................................114 Consistência é fundamental....................................................................114 Nomenclatura consistente e significativa.............................................115 Regras comuns de validação...............................................................116 Estruturas previsíveis.........................................................................117 Tomando decisões de design quanto à robustez........................................118 Capítulo 12 ■ Tratamento de erros em APIs............................................................119 Formato de saída....................................................................................119 Mensagens de erro significativas............................................................. 123 O que fazer quando você detectar erros................................................... 125 Capítulo 13 ■ Documentação................................................................................126 Documentação geral.............................................................................. 126 Documentação da API............................................................................ 127 Documentação interativa........................................................................ 129 Tutoriais e o ecossistema mais amplo.......................................................131 Apêndice A ■ Guia para códigos de status comuns..................................................132 Apêndice B ■ Cabeçalhos HTTP comuns.................................................................134 7