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

Desenvolvendo APIs de Alta Performance

Desenvolvendo APIs de Alta Performance

Palestra proferida nas dependências da Dataprev Rio sobre os aspectos que impactam na performance e na qualidade de uso de APIs.

Ricardo Coelho

February 21, 2014
Tweet

More Decks by Ricardo Coelho

Other Decks in Technology

Transcript

  1. API e seus diversos formatos e regras de negócio que

    participam da entrega de dados ao cliente. Conjunto de Modais
  2. API Eficiente Ações na aplicação Estabeleça um padrão e use-o

    Fundamental em aplicações móveis Entregar Dados Prontos
  3. Use os códigos de estado HTTP 200 OK ! {

    “is_error”: true, “message”: “Not found” } 404 Not Found ! ! ! ! API Eficiente
  4. Use os verbos HTTP GET /api/v1/recurso/criar ! { “nome”: “Ricardo”,

    … } PUT /api/v1/recurso ! { “nome”: “Ricardo”, … } API Eficiente
  5. Update em Campos Específicos PATCH /api/v1/recurso/ HTTP/1.1 Host: servidor.com.br Content-Type:

    application/json-patch ! [ {"replace": "nome", "value": “Ricardo Coelho"} ] Reduzir a Pegada
  6. Update em Campos Específicos POST /api/v1/recurso/ HTTP/1.1 X-HTTP-Method-Override: PATCH Host:

    servidor.com.br Content-Type: application/json-patch ! [ {"replace": "nome", "value": “Ricardo Coelho"} ] Reduzir a Pegada
  7. PATCH /api/v1/recurso/ HTTP/1.1 Host: servidor.com.br Content-Type: application/json-patch ! [ {“replace”:

    “nome”, “value”: “Ricardo Coelho”}, {“unset”: “faltas”}, {“add”: “ferias”, “value”: { “inicio”: “2014-01-05”, “fim”: “2014-02-04” } } ] Reduzir a Pegada
  8. PATCH /api/v1/recurso/ HTTP/1.1 Host: servidor.com.br Content-Type: application/json-patch ! [ {“nome”:

    “Ricardo Coelho”}, {“faltas”: null}, {“ferias”: { “inicio”: “2014-01-05”, “fim”: “2014-02-04” } } ] Reduzir a Pegada
  9. OPTIONS /api/v1/recurso/ HTTP/1.1 Host: servidor.com.br Content-Type: application/json-patch ! { “_comment”:

    “bla, bla, bla”, “format”: { “id”: “int”, “nome”: “string”, “faltas”: [ “datetime” ] “ferias”: { “inicio”: “date”, “fim”: “date” } } } Documentação para Sistemas