///
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Ter uma interface web de documentação automática da API.
Dada a simplicidade do Flask, ele parecia uma boa opção para construção de APIs. A próxima coisa a encontrar era um "Django REST Framework" para Flask.
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Ser um microframework. Tornar fácil misturar e combinar as ferramentas e partes necessárias.
Veja as similaridades em `requests.get(...)` e `@app.get(...)`.
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
* Ter uma API simples e intuitiva.
* Utilizar nomes de métodos HTTP (operações) diretamente, de um jeito direto e intuitivo.
É por isso que ao falar sobre a versão 2.0 é comum dizer "Swagger", e para a versão 3+ "OpenAPI".
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Adotar e usar um padrão aberto para especificações de API, em vez de um schema personalizado.
Mas ele foi criado antes de existirem as anotações de tipo do Python. Então, para definir cada <dfn title="a definição de como os dados devem ser formados">schema</dfn> você precisa utilizar utilitários e classes específicos fornecidos pelo Marshmallow.
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Usar código para definir "schemas" que forneçam, automaticamente, tipos de dados e validação.
É uma grande ferramenta e eu também a utilizei bastante, antes de ter o **FastAPI**.
-/// info | Informação
+/// note | Nota
Webargs foi criado pelos mesmos desenvolvedores do Marshmallow.
///
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Ter validação automática dos dados de requisições de entrada.
O editor não pode ajudar muito com isso. E se modificarmos parâmetros ou schemas do Marshmallow e esquecermos de também modificar aquela docstring em YAML, o schema gerado ficaria obsoleto.
-/// info | Informação
+/// note | Nota
APISpec foi criado pelos mesmos desenvolvedores do Marshmallow.
///
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Dar suporte ao padrão aberto para APIs, OpenAPI.
E esses mesmos geradores full-stack foram a base dos [Geradores de Projetos **FastAPI**](project-generation.md).
-/// info | Informação
+/// note | Nota
Flask-apispec foi criado pelos mesmos desenvolvedores do Marshmallow.
///
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Gerar o schema OpenAPI automaticamente, a partir do mesmo código que define serialização e validação.
Ele não consegue lidar muito bem com modelos aninhados. Então, se o corpo JSON na requisição for um objeto JSON que contém campos internos que por sua vez são objetos JSON aninhados, ele não consegue ser documentado e validado apropriadamente.
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Usar tipos do Python para ter um ótimo suporte do editor.
///
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Encontrar um jeito de ter uma performance insana.
Então, validação de dados, serialização e documentação têm que ser feitos no código, não automaticamente. Ou eles têm que ser implementados como um framework acima do Falcon, como o Hug. Essa mesma distinção acontece em outros frameworks inspirados pelo design do Falcon, de ter um objeto de request e um objeto de response como parâmetros.
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Encontrar maneiras de obter uma ótima performance.
As rotas são declaradas em um único lugar, usando funções declaradas em outros lugares (em vez de usar decorators que possam ser colocados diretamente acima da função que lida com o endpoint). Isso é mais próximo de como o Django faz do que de como o Flask (e o Starlette) fazem. Separa no código coisas que são relativamente bem acopladas.
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Definir validações extras para tipos de dados usando o valor "padrão" de atributos dos modelos. Isso melhora o suporte do editor, e não estava disponível no Pydantic antes.
Como é baseado no padrão anterior para frameworks web Python síncronos (WSGI), ele não consegue lidar com Websockets e outras coisas, embora ainda tenha alta performance também.
-/// info | Informação
+/// note | Nota
Hug foi criado por Timothy Crosley, o mesmo criador do [`isort`](https://github.com/timothycrosley/isort), uma ótima ferramenta para ordenar automaticamente imports em arquivos Python.
///
-/// check | Ideias que inspiraram o **FastAPI**
+/// tip | Ideias que inspiraram o **FastAPI**
Hug inspirou partes do APIStar, e foi uma das ferramentas que achei mais promissoras, ao lado do APIStar.
Agora APIStar é um conjunto de ferramentas para validar especificações OpenAPI, não um framework web.
-/// info | Informação
+/// note | Nota
APIStar foi criado por Tom Christie. O mesmo cara que criou:
///
-/// check | Inspirou o **FastAPI** a
+/// tip | Inspirou o **FastAPI** a
Existir.
Ele é comparável ao Marshmallow. Embora seja mais rápido que o Marshmallow em benchmarks. E como é baseado nas mesmas anotações de tipo do Python, o suporte do editor é ótimo.
-/// check | **FastAPI** usa isso para
+/// tip | **FastAPI** usa isso para
Controlar toda a validação de dados, serialização de dados e documentação automática de modelos (baseada no JSON Schema).
///
-/// check | **FastAPI** usa isso para
+/// tip | **FastAPI** usa isso para
Controlar todas as partes web centrais. Adiciona funcionalidades por cima.
Ele é o servidor recomendado para Starlette e **FastAPI**.
-/// check | **FastAPI** o recomenda como
+/// tip | **FastAPI** o recomenda como
O principal servidor web para rodar aplicações **FastAPI**.
-# Ajude o FastAPI - Obtenha ajuda { #help-fastapi-get-help }
+# Ajuda { #help }
-Você gosta do **FastAPI**?
+Você gostaria de ajudar o FastAPI ou obter ajuda sobre o FastAPI?
-Você gostaria de ajudar o FastAPI, outras pessoas usuárias e o autor?
-
-Ou você gostaria de obter ajuda com o **FastAPI**?
-
-Há maneiras muito simples de ajudar (várias envolvem apenas um ou dois cliques).
-
-E também há várias formas de obter ajuda.
+Há maneiras muito simples de ajudar e de obter ajuda.
## Assine a newsletter { #subscribe-to-the-newsletter }
* Mudanças incompatíveis 🚨
* Dicas e truques ✅
-## Siga o FastAPI no X (Twitter) { #follow-fastapi-on-x-twitter }
+## Siga o FastAPI online { #follow-fastapi-online }
-[Siga @fastapi no **X (Twitter)**](https://x.com/fastapi) para receber as últimas notícias sobre o **FastAPI**. 🐦
+Você pode seguir o **FastAPI** online em vários lugares:
+
+* [@fastapi no **X / Twitter**](https://x.com/fastapi)
+* [@fastapi.tiangolo.com no **Bluesky**](https://bsky.app/profile/fastapi.tiangolo.com)
+* [FastAPI no **LinkedIn**](https://www.linkedin.com/company/fastapi/)
## Dê uma estrela ao **FastAPI** no GitHub { #star-fastapi-in-github }
Fazendo isso, você receberá notificações (no seu email) sempre que houver um novo lançamento (uma nova versão) do **FastAPI** com correções de bugs e novas funcionalidades.
-## Conecte-se com o autor { #connect-with-the-author }
-
-Você pode se conectar [comigo (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), o autor.
-
-Você pode:
-
-* [Me seguir no **GitHub**](https://github.com/tiangolo).
- * Ver outros projetos Open Source que criei e que podem ajudar você.
- * Me seguir para saber quando eu criar um novo projeto Open Source.
-* [Me seguir no **X (Twitter)**](https://x.com/tiangolo) ou no [Mastodon](https://fosstodon.org/@tiangolo).
- * Me contar como você usa o FastAPI (adoro saber disso).
- * Ficar sabendo quando eu fizer anúncios ou lançar novas ferramentas.
- * Você também pode [seguir @fastapi no X (Twitter)](https://x.com/fastapi) (uma conta separada).
-* [Me seguir no **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
- * Ver quando eu fizer anúncios ou lançar novas ferramentas (embora eu use mais o X (Twitter) 🤷♂).
-* Ler o que escrevo (ou me seguir) no [**Dev.to**](https://dev.to/tiangolo) ou no [**Medium**](https://medium.com/@tiangolo).
- * Ler outras ideias, artigos e conhecer ferramentas que criei.
- * Me seguir para ver quando eu publicar algo novo.
-
-## Tweet sobre o **FastAPI** { #tweet-about-fastapi }
-
-[Tweet sobre o **FastAPI**](https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi) e conte para mim e para outras pessoas por que você gosta dele. 🎉
-
-Eu adoro saber como o **FastAPI** está sendo usado, o que você tem curtido nele, em qual projeto/empresa você o utiliza, etc.
+## Siga o autor { #follow-the-author }
-## Vote no FastAPI { #vote-for-fastapi }
+Você pode seguir [a mim (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), o autor, em alguns lugares, para saber quando eu tiver novidades para compartilhar sobre o FastAPI e amigos:
-* [Vote no **FastAPI** no Slant](https://www.slant.co/options/34241/~fastapi-review).
-* [Vote no **FastAPI** no AlternativeTo](https://alternativeto.net/software/fastapi/about/).
-* [Diga que você usa o **FastAPI** no StackShare](https://stackshare.io/pypi-fastapi).
+* [@tiangolo no **GitHub**](https://github.com/tiangolo).
+* [@tiangolo no **X (Twitter)**](https://x.com/tiangolo)
+* [@tiangolo.com no **Bluesky**](https://bsky.app/profile/tiangolo.com)
+* [@tiangolo no **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
## Ajude outras pessoas com perguntas no GitHub { #help-others-with-questions-in-github }
-Você pode tentar ajudar outras pessoas com suas perguntas em:
-
-* [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered)
-* [GitHub Issues](https://github.com/fastapi/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+)
+Você pode tentar ajudar outras pessoas com suas perguntas no [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered).
Em muitos casos você já pode saber a resposta para aquelas perguntas. 🤓
Se você estiver ajudando muitas pessoas com suas perguntas, você se tornará um(a) [Especialista em FastAPI](fastapi-people.md#fastapi-experts) oficial. 🎉
-Apenas lembre-se, o ponto mais importante é: tente ser gentil. As pessoas chegam com frustrações e, em muitos casos, não perguntam da melhor forma, mas tente ao máximo ser gentil. 🤗
-
-A ideia é que a comunidade do **FastAPI** seja gentil e acolhedora. Ao mesmo tempo, não aceite bullying ou comportamentos desrespeitosos com outras pessoas. Temos que cuidar uns dos outros.
-
----
-
-Veja como ajudar outras pessoas com perguntas (em discussions ou issues):
-
-### Entenda a pergunta { #understand-the-question }
-
-* Verifique se você consegue entender qual é o **objetivo** e o caso de uso de quem está perguntando.
-
-* Depois verifique se a pergunta (a grande maioria são perguntas) está **clara**.
-
-* Em muitos casos a pergunta feita é sobre uma solução imaginada pela pessoa usuária, mas pode haver uma solução **melhor**. Se você entender melhor o problema e o caso de uso, pode sugerir uma **solução alternativa** melhor.
-
-* Se você não entender a pergunta, peça mais **detalhes**.
-
-### Reproduza o problema { #reproduce-the-problem }
+Apenas lembre-se, o ponto mais importante é: tente ser gentil. 🤗
-Na maioria dos casos e na maioria das perguntas há algo relacionado ao **código original** da pessoa.
+### Como ajudar { #how-to-help }
-Em muitos casos ela só copia um fragmento do código, mas isso não é suficiente para **reproduzir o problema**.
-
-* Você pode pedir que forneçam um [exemplo mínimo, reproduzível](https://stackoverflow.com/help/minimal-reproducible-example), que você possa **copiar e colar** e executar localmente para ver o mesmo erro ou comportamento que elas estão vendo, ou para entender melhor o caso de uso.
-
-* Se você estiver muito generoso, pode tentar **criar um exemplo** assim você mesmo, apenas com base na descrição do problema. Só tenha em mente que isso pode levar bastante tempo e pode ser melhor pedir primeiro que esclareçam o problema.
-
-### Sugira soluções { #suggest-solutions }
-
-* Depois de conseguir entender a pergunta, você pode dar uma possível **resposta**.
-
-* Em muitos casos, é melhor entender o **problema subjacente ou caso de uso**, pois pode haver uma forma melhor de resolver do que aquilo que estão tentando fazer.
-
-### Peça para encerrar { #ask-to-close }
-
-Se a pessoa responder, há uma grande chance de você ter resolvido o problema, parabéns, **você é um herói**! 🦸
-
-* Agora, se isso resolveu o problema, você pode pedir para:
-
- * No GitHub Discussions: marcar o comentário como a **resposta**.
- * No GitHub Issues: **encerrar** a issue.
-
-## Acompanhe o repositório do GitHub { #watch-the-github-repository }
-
-Você pode “acompanhar” (watch) o FastAPI no GitHub (clicando no botão “watch” no canto superior direito): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi). 👀
-
-Se você selecionar “Acompanhando” em vez de “Apenas lançamentos”, receberá notificações quando alguém criar uma nova issue ou pergunta. Você também pode especificar que quer ser notificado apenas sobre novas issues, ou discussions, ou PRs, etc.
-
-Assim você pode tentar ajudar a resolver essas questões.
+Siga o [guia sobre como ajudar](https://tiangolo.com/open-source/help/#help-others-with-questions-in-github) aqui.
## Faça perguntas { #ask-questions }
* Fazer uma **pergunta** ou perguntar sobre um **problema**.
* Sugerir uma nova **funcionalidade**.
-**Nota**: se você fizer isso, então vou pedir que você também ajude outras pessoas. 😉
-
-## Revise Pull Requests { #review-pull-requests }
-
-Você pode me ajudar revisando pull requests de outras pessoas.
-
-Novamente, por favor tente ao máximo ser gentil. 🤗
-
----
-
-Veja o que ter em mente e como revisar um pull request:
-
-### Entenda o problema { #understand-the-problem }
-
-* Primeiro, garanta que você **entendeu o problema** que o pull request tenta resolver. Pode haver uma discussão mais longa em uma Discussion ou issue do GitHub.
-
-* Também há uma boa chance de o pull request não ser realmente necessário porque o problema pode ser resolvido de uma **forma diferente**. Aí você pode sugerir ou perguntar sobre isso.
-
-### Não se preocupe com estilo { #dont-worry-about-style }
-
-* Não se preocupe muito com coisas como estilos de mensagens de commit, eu vou fazer squash e merge personalizando o commit manualmente.
-
-* Também não se preocupe com regras de estilo, já há ferramentas automatizadas verificando isso.
-
-E se houver qualquer outra necessidade de estilo ou consistência, vou pedir diretamente, ou vou adicionar commits por cima com as mudanças necessárias.
-
-### Verifique o código { #check-the-code }
-
-* Verifique e leia o código, veja se faz sentido, **execute localmente** e veja se realmente resolve o problema.
-
-* Depois **comente** dizendo que você fez isso, é assim que saberei que você realmente verificou.
-
-/// info | Informação
-
-Infelizmente, eu não posso simplesmente confiar em PRs que têm várias aprovações.
-
-Já aconteceu várias vezes de haver PRs com 3, 5 ou mais aprovações, provavelmente porque a descrição é atraente, mas quando eu verifico os PRs, eles estão quebrados, têm um bug, ou não resolvem o problema que afirmam resolver. 😅
-
-Por isso, é realmente importante que você leia e execute o código, e me avise nos comentários que você fez isso. 🤓
-
-///
-
-* Se o PR puder ser simplificado de alguma forma, você pode pedir isso, mas não há necessidade de ser exigente demais, pode haver muitos pontos de vista subjetivos (e eu terei o meu também 🙈), então é melhor focar nas coisas fundamentais.
-
-### Testes { #tests }
-
-* Me ajude a verificar se o PR tem **testes**.
-
-* Verifique se os testes **falham** antes do PR. 🚨
-
-* Depois verifique se os testes **passam** após o PR. ✅
-
-* Muitos PRs não têm testes, você pode **lembrar** a pessoa de adicionar testes, ou até **sugerir** alguns testes você mesmo. Essa é uma das coisas que consomem mais tempo e você pode ajudar muito com isso.
-
-* Depois também comente o que você testou, assim vou saber que você verificou. 🤓
-
-## Crie um Pull Request { #create-a-pull-request }
-
-Você pode [contribuir](contributing.md) com o código-fonte fazendo Pull Requests, por exemplo:
-
-* Para corrigir um erro de digitação que você encontrou na documentação.
-* Para compartilhar um artigo, vídeo ou podcast que você criou ou encontrou sobre o FastAPI, [editando este arquivo](https://github.com/fastapi/fastapi/edit/master/docs/en/data/external_links.yml).
- * Garanta que você adicione seu link no início da seção correspondente.
-* Para ajudar a [traduzir a documentação](contributing.md#translations) para seu idioma.
- * Você também pode ajudar a revisar as traduções criadas por outras pessoas.
-* Para propor novas seções de documentação.
-* Para corrigir uma issue/bug existente.
- * Garanta que você adicione testes.
-* Para adicionar uma nova funcionalidade.
- * Garanta que você adicione testes.
- * Garanta que você adicione documentação se for relevante.
-
-## Ajude a manter o FastAPI { #help-maintain-fastapi }
-
-Ajude-me a manter o **FastAPI**! 🤓
-
-Há muito trabalho a fazer e, para a maior parte dele, **VOCÊ** pode ajudar.
-
-As principais tarefas que você pode fazer agora são:
-
-* [Ajudar outras pessoas com perguntas no GitHub](#help-others-with-questions-in-github) (veja a seção acima).
-* [Revisar Pull Requests](#review-pull-requests) (veja a seção acima).
-
-Essas duas tarefas são as que **mais consomem tempo**. Esse é o principal trabalho de manter o FastAPI.
-
-Se você puder me ajudar com isso, **você está me ajudando a manter o FastAPI** e garantindo que ele continue **avançando mais rápido e melhor**. 🚀
-
## Entre no chat { #join-the-chat }
Entre no 👥 [servidor de chat do Discord](https://discord.gg/VQjSZaeJmf) 👥 e converse com outras pessoas da comunidade FastAPI.
/// tip | Dica
-Para perguntas, faça-as no [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/new?category=questions), há uma chance muito maior de você receber ajuda pelos [Especialistas em FastAPI](fastapi-people.md#fastapi-experts).
+Para perguntas, faça-as no GitHub Discussions, há uma chance muito maior de você receber ajuda.
Use o chat apenas para outras conversas gerais.
Tenha em mente que, como os chats permitem uma “conversa mais livre”, é fácil fazer perguntas muito gerais e mais difíceis de responder, então você pode acabar não recebendo respostas.
-No GitHub, o template vai orientar você a escrever a pergunta certa para que você consiga obter uma boa resposta com mais facilidade, ou até resolver o problema sozinho antes de perguntar. E no GitHub eu consigo garantir que sempre vou responder tudo, mesmo que leve algum tempo. Eu pessoalmente não consigo fazer isso com os sistemas de chat. 😅
-
-As conversas nos sistemas de chat também não são tão fáceis de pesquisar quanto no GitHub, então perguntas e respostas podem se perder na conversa. E somente as que estão no GitHub contam para você se tornar um(a) [Especialista em FastAPI](fastapi-people.md#fastapi-experts), então é bem provável que você receba mais atenção no GitHub.
-
-Por outro lado, há milhares de usuários nos sistemas de chat, então há uma grande chance de você encontrar alguém para conversar por lá quase o tempo todo. 😄
-
-## Patrocine o autor { #sponsor-the-author }
-
-Se o seu **produto/empresa** depende de ou está relacionado ao **FastAPI** e você quer alcançar suas pessoas usuárias, você pode patrocinar o autor (eu) através do [GitHub sponsors](https://github.com/sponsors/tiangolo). Dependendo do nível, você pode obter benefícios extras, como um selo na documentação. 🎁
-
----
+No GitHub, o template vai orientar você a escrever a pergunta certa para que você consiga obter uma boa resposta com mais facilidade, ou até resolver o problema sozinho antes de perguntar.
-Obrigado! 🚀
+As conversas nos sistemas de chat também não são tão fáceis de pesquisar quanto no GitHub; elas se perdem.