Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Boas práticas de API Design

2 016 vues

Publié le

Nestes slides apresento dicas de Design de API, que são algumas boas práticas para construir APIs REST.

Publié dans : Technologie
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Show Leandro! Vlw! Tbm vou apresentar essa talk no Santos.Backend que vai acontecer mês que vem: http://www.meetup.com/saantos-backend-meetup
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Boa Caião. Acabei de mostrar pra galera aqui na BankFacil boas práticas do básico de se construir rotas REST dos recursos, usando seu slide. Dei coraçãozinho :)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Boas práticas de API Design

  1. 1. BoaspráticasdeAPIDesign Caio Ribeiro Pereira @crp_underground
 http://crpwebdev.com
 http://udgwebdev.com
  2. 2. Aboutme • Web Developer na Concrete Solutions • Blogueiro no udgwebdev.com • Autor dos livros de Node.js/Meteor na Casa do Código • Projetos • DevFreeCasts (devfreecasts.org) • DevFreeBooks (devfreebooks.org)
  3. 3. Tópicosadiscutir… • Versionamento de APIs • Definição de endpoints • Métodos do HTTP • Status do HTTP • JSON de resposta • Tratamento de erros • Dicas de segurança • Ferramenta para documentação de APIs • Considerações finais
  4. 4. VersionamentodeAPIs • Exemplos de versionamento: • url: api.com/v1/endpoint (via código da API) • subdomain: v1.api.com/endpoint (via DNS) • header: “Accept”=“application/vnd.api.v1.json” (via Middleware)
  5. 5. Definiçãodeendpoints • Criando endpoints: • Listando clientes
 /clientes • Visualizando um cliente
 /clientes/{cliente_id} • Executando uma ação de recurso
 /clientes/{cliente_id}/login • Visualizando uma determinada compra de um cliente
 /clientes/{cliente_id}/compras/{compra_id}
  6. 6. Definiçãodeendpoints • Organizando endpoints: • Evite muitos “encadeamento" de endpoints: • /clientes/1/compras/2/items/3 • Mantenha no máximo um duplo encadeamento de endpoints: • /clientes/1/compras/2 • /compras/2/items/3 • Utilize nomes em plural para recursos e verbos para ações: • /clientes/1/login
  7. 7. Definiçãodeendpoints • Use querystrings para seleção de campos, ordenações e paginações: • Paginando
 /clientes?offset=10&limit=2
 /clientes?page=10&limit=2
 /clientes?page=10&per_page=2 • Ordenando
 /clientes?sort=nome • Selecionando campos
 /clientes?fields=nome,idade • Tudo junto!
 /clientes?offset=10&limit=2&sort=nome&fields=nome
  8. 8. MétodosdoHTTP • GET/clientes - Lista todos os clientes • GET/clientes/1 - Visualiza um cliente • POST/clientes - Cadastra um novo cliente • PUT/clientes/1 - Atualiza todos os dados do cliente • PATCH/clientes/1- Atualiza alguns dados do cliente • DELETE/clientes/1- Exclui um cliente
  9. 9. StatusdoHTTP • 2xx-Statusdesucesso
 3xx-Statusderedirecionamento
 4xx-Statusdeerronocliente
 5xx-Statusdeerronoservidor • Exemplos de status mais utilizados: • 200-OK,201-Created,204-NoContent • 404-NotFound,401-Unauthorized,405-MethodNotAllowed • 412-PreconditionFailed,411-LengthRequired,408-RequestTimeout • 500-InternalServerError,501-NotImplemented • Veja mais status em: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html • Dica: Padronize sua API para usar entre 7-12 status codes.
  10. 10. JSONderesposta Retornandoumobjeto
 {
 “code”:“12312cA",
 “nome”:“João",
 “idade”:18
 } Use UUID como id de objetos (campo code), evite id de banco de dados.
 Evite retornar objetos que não estejam em relacionamento, neste caso crie endpoints específicos para retornar cada um desses objetos. Retornandoobjetosrelacionados
 {
 “code”:“12312cA”,
 “nome”:“João”,
 “compra”:{
 “code”:“13333A”,
 “valor”:10.00
 }
 }
  11. 11. Tratamentodeerros • Retorne JSON de erros
 Erros genéricos
 {
 “code”:“0001",
 “message”:“Acessonegado!”
 }
 
 Erros de campos específicos
 {
 “code”:“0002”,
 “errors”:[
 {“nome”:[“Nomeembranco”]},
 {“idade”:[“Idadeembranco”,“Vocêémenordeidade”]}
 ]
 } • Utilize corretamente os códigos 4xx ou 5xx do HTTP para definir seu respectivo status do erro. • Não é obrigatório! Mas trabalhar com códigos de erros internos é uma boa prática também
  12. 12. Dicasdesegurança • Implemente OAuth para clientes consumirem sua api • Habilite o CORS (Cross-Origin Resource Sharing) para controlar acesso aos recursos • Evite o uso de Tokens estáticos para acesso a api
  13. 13. FerramentaparadocumentaçãodeAPIs Swagger
 http://swagger.io
 Permitetrabalharcommockseéserverself-hosted
  14. 14. FerramentaparadocumentaçãodeAPIs ApiDoc.js
 http://apidocjs.com
 Geradocumentaçãoemcimadecomentáriosnocódigo /** * @api {get} /signin Singin * @apiGroup Sistema * * @apiSuccess {String} status Mensagem de acesso autorizado * * @apiSuccessExample {json} Sucesso * HTTP/1.1 200 OK * { * "status": "Logado!" * } * */ app.get("/signin", function(req, res) { res.json({status: "Logado!"}); });
  15. 15. FerramentaparadocumentaçãodeAPIs Apiary
 http://apiary.io
 SaaS,documentaçãoemmarkdownetrabalhacommocks
  16. 16. Consideraçõesfinais • Crie versões client (consumers) que abstraia complexidade do consumo da api para algumas ou as principais linguagens programação.
 Exemplos: api-client-node, api-client-java, api-client-ruby… • APIs de referência para estudos… • Heroku: https://devcenter.heroku.com/categories/platform-api
 Github: https://developer.github.com/v3
 Twitter: https://dev.twitter.com/rest/public
 Facebook: https://developers.facebook.com • MarketPlace com várias APIs públicas: http://www.publicapis.com

  17. 17. Obrigado! THEEND

×