Upgrade to Pro — share decks privately, control downloads, hide ads and more …

API 101: o que é, onde vive, como se alimenta?

API 101: o que é, onde vive, como se alimenta?

Palestra apresentada no Darkmira Tour 2017, em Brasília

API é uma sigla que tá na moda. Todo mundo fala sobre, consome, disponibiliza. Mas o que exatamente é uma API? Essa palestra vai responder a essa pergunta e mais: entenda conceitos como status code, autenticação, documentação de uma API e boas práticas.

Diana Arnos

May 27, 2017
Tweet

More Decks by Diana Arnos

Other Decks in Programming

Transcript

  1. APIS: O QUE SÃO, ONDE
    VIVEM E COMO SE
    ALIMENTAM

    View full-size slide

  2. 1. APIS: O QUE SÃO, ONDE VIVEM E COMO SE
    ALIMENTAM
    a.k.a. Application Programming Interface

    View full-size slide

  3. UMA
    INTERFACE
    E nada mais.
    Mesmo.
    Sistema
    API
    Sistema /
    Serviço

    View full-size slide

  4. 2. BOAS PRÁTICAS, RESTFUL E OUTRAS HISTÓRIAS
    Pelo bem de todos os devs

    View full-size slide

  5. RESTFUL
    • REST: REpresentational State Transfer
    • Requisições e respostas via HTTP
    • As transações são identificadas via métodos: GET, POST, PUT, PATCH, DELETE
    • Cada recurso deve ter sua própria URL
    • Os recursos devem ser diferenciados por IDs
    • Stateless
    GET http://www.aquelaurlmarota.com/users/12345/orders

    View full-size slide

  6. STATUS CODES
    Toda resposta traz um status code
    • 2xx: 200, 201, 204… SUUUCESSOOOOO!
    • 3xx: 302, 304… redirecionamentos
    • 4xx: 400, 401, 403, 404… erros client side
    • 5xx: 500… erros server side
    http://http.cat/

    View full-size slide

  7. STATUS CODES
    https://http.cat/200

    View full-size slide

  8. VERSIONAMENTO
    • Exponha só a versão cheia (/v1/users ou /v2/users)
    • Evite breaking changes:
    • renomear campos
    • remover recursos
    • remover endpoints
    • mudar o formato da resposta

    View full-size slide

  9. PADRONIZAÇÃO
    • Padronize as respotas: json, xml?
    • Consistência entre os diferentes endpoints
    • Status codes
    • Cabeçalhos só quando realmente necessário

    View full-size slide

  10. DICAS PARA MONTAR UMA
    RESPOSTA DECENTE
    • Wrap de resposta:
    {
    ”data”: {
    ”nome”: ”diana”,
    ”cor”: ”vermelho”
    }
    }

    View full-size slide

  11. DICAS PARA MONTAR UMA
    RESPOSTA DECENTE
    • Ao retornar um erro, mostre código E descrição
    {
    ”errorCode”:123,
    ”errors”: [
    ”special characters are not alowed”,
    ”user CPF is required”
    ]
    }
    • NUNCA exponha erros internos ao usuário

    View full-size slide

  12. SEGURANÇA
    • Não exponha IDs sequenciais
    • Limite de requisições por segundo
    • SEMPRE use https
    • Não use logins por senha

    View full-size slide

  13. 3. DOCUMENTAÇÃO
    O coração de uma boa API

    View full-size slide

  14. DOCUMENTAÇÃO
    • ”Uma API só é tão boa quanto sua documentação” (apiary.io)
    • Quem consome? Desenvolvedores, não máquinas
    • Sugestão: swagger (http://swagger.io/)
    • Documentation First
    • EMPATIA

    View full-size slide

  15. 4. AUTENTICAÇÃO
    Login e senha NÃO

    View full-size slide

  16. AUTENTICAÇÃO
    • OAuth 2.0
    • segue um fluxo de autorização
    • JWT
    • utiliza tokens de autenticação

    View full-size slide

  17. OBRIGADA!
    Diana Arnos
    tech daimyo @ high stakes
    academy
    twitter: dianaarnos
    facebook: dianaarnos
    github: dianaarnos
    instagram: dianaarnos
    https://joind.in/talk/a4771

    View full-size slide