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

Documentando API no Django com django-ninja

Documentando API no Django com django-ninja

swagger-ui, django-ninja, contrato e openapi

Roger Camargo

April 26, 2023
Tweet

More Decks by Roger Camargo

Other Decks in Programming

Transcript

  1. Backend 🦄 Django navegador Frontend API JSON via HTTP VueJS

    React Flutter React native HTML+CSS+JS Outro backend (sem front)
  2. Backend Data Client 1 API System A SDK Client JS

    System B Client 2 Schema API Mock Documentação de uso da API
  3. Backend 🦄 Django - Quais endpoints? - Quais parâmetros? -

    É via header, query ou body? - Qual o código de retorno? - Qual a resposta de cada endpoint? Clientes da API API JSON via HTTP
  4. 👉 - Django ninja lê o código e decorators das

    views - Gera urls automaticamente (urls.py) - Gera documentação - Criando schema, ganhamos validação e melhor docs DOCS usando swagger-ui urls.py views.py
  5. Conclusões: - Se sua API é apenas para uso interno,

    talvez tudo bem não ter documentação - Uma API documentada vai dar muito mais produtividade para todos os envolvidos, vai facilitar resolver bugs etc. - Opção 3 - É legal principalmente quando conseguimos minimizar o problema de documentação desatualizada! - Opção 4 - Contrato de API gerando tudo é outro nível, mas em sistemas legados vai dar um trabalhão. Excelente para novos projetos
  6. References: https://swagger.io/resources/webinars/adopting-a-design-first-approach/ https://apisyouwonthate.com/blog/api-design-first-vs-code-first https://www.openapis.org/ https://spec.openapis.org/oas/latest.html https://www.youtube.com/watch?v=TfGHNBaK9a0 https://http.cat/ Tools: https://github.com/zalando/connexion https://openapi.tools/

    https://editor.swagger.io/ https://stoplight.io/ Code sample: https://github.com/huogerac/mydjavuelist/tree/issue16_add_django_ninja_doc_api (django-ninja) https://github.com/billcode/jarless (openapi) https://github.com/confraria-devpro/hackernews-api (openapi) API Design First https://pythonpro.com.br