Skip to content

Commit

Permalink
Merge branch 'master' into dependabot/pip/mypy-0.982
Browse files Browse the repository at this point in the history
  • Loading branch information
tiangolo committed Oct 31, 2022
2 parents 508281b + 42a4ed7 commit cee2a02
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 1 deletion.
1 change: 1 addition & 0 deletions .github/actions/notify-translations/app/translations.yml
Expand Up @@ -17,3 +17,4 @@ nl: 4701
uz: 4883
sv: 5146
he: 5157
ta: 5434
3 changes: 3 additions & 0 deletions docs/en/docs/release-notes.md
Expand Up @@ -2,6 +2,9 @@

## Latest Changes

* 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/response-status-code.md`. PR [#4922](https://github.com/tiangolo/fastapi/pull/4922) by [@batlopes](https://github.com/batlopes).
* 🔧 Add config for Tamil translations. PR [#5563](https://github.com/tiangolo/fastapi/pull/5563) by [@tiangolo](https://github.com/tiangolo).
* 🐛 Fix internal Trio test warnings. PR [#5547](https://github.com/tiangolo/fastapi/pull/5547) by [@samuelcolvin](https://github.com/samuelcolvin).
*[pre-commit.ci] pre-commit autoupdate. PR [#5408](https://github.com/tiangolo/fastapi/pull/5408) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* ⬆️ Upgrade Typer to include Rich in scripts for docs. PR [#5502](https://github.com/tiangolo/fastapi/pull/5502) by [@tiangolo](https://github.com/tiangolo).
* 🐛 Fix calling `mkdocs` for languages as a subprocess to fix/enable MkDocs Material search plugin. PR [#5501](https://github.com/tiangolo/fastapi/pull/5501) by [@tiangolo](https://github.com/tiangolo).
Expand Down
91 changes: 91 additions & 0 deletions docs/pt/docs/tutorial/response-status-code.md
@@ -0,0 +1,91 @@
# Código de status de resposta

Da mesma forma que você pode especificar um modelo de resposta, você também pode declarar o código de status HTTP usado para a resposta com o parâmetro `status_code` em qualquer uma das *operações de caminho*:

* `@app.get()`
* `@app.post()`
* `@app.put()`
* `@app.delete()`
* etc.

```Python hl_lines="6"
{!../../../docs_src/response_status_code/tutorial001.py!}
```

!!! note "Nota"
Observe que `status_code` é um parâmetro do método "decorador" (get, post, etc). Não da sua função de *operação de caminho*, como todos os parâmetros e corpo.

O parâmetro `status_code` recebe um número com o código de status HTTP.

!!! info "Informação"
`status_code` também pode receber um `IntEnum`, como o do Python <a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a>.

Dessa forma:

* Este código de status será retornado na resposta.
* Será documentado como tal no esquema OpenAPI (e, portanto, nas interfaces do usuário):

<img src="/img/tutorial/response-status-code/image01.png">

!!! note "Nota"
Alguns códigos de resposta (consulte a próxima seção) indicam que a resposta não possui um corpo.

O FastAPI sabe disso e produzirá documentos OpenAPI informando que não há corpo de resposta.

## Sobre os códigos de status HTTP

!!! note "Nota"
Se você já sabe o que são códigos de status HTTP, pule para a próxima seção.

Em HTTP, você envia um código de status numérico de 3 dígitos como parte da resposta.

Esses códigos de status têm um nome associado para reconhecê-los, mas o importante é o número.

Resumidamente:


* `100` e acima são para "Informações". Você raramente os usa diretamente. As respostas com esses códigos de status não podem ter um corpo.
* **`200`** e acima são para respostas "Bem-sucedidas". Estes são os que você mais usaria.
* `200` é o código de status padrão, o que significa que tudo estava "OK".
* Outro exemplo seria `201`, "Criado". É comumente usado após a criação de um novo registro no banco de dados.
* Um caso especial é `204`, "Sem Conteúdo". Essa resposta é usada quando não há conteúdo para retornar ao cliente e, portanto, a resposta não deve ter um corpo.
* **`300`** e acima são para "Redirecionamento". As respostas com esses códigos de status podem ou não ter um corpo, exceto `304`, "Não modificado", que não deve ter um.
* **`400`** e acima são para respostas de "Erro do cliente". Este é o segundo tipo que você provavelmente mais usaria.
* Um exemplo é `404`, para uma resposta "Não encontrado".
* Para erros genéricos do cliente, você pode usar apenas `400`.
* `500` e acima são para erros do servidor. Você quase nunca os usa diretamente. Quando algo der errado em alguma parte do código do seu aplicativo ou servidor, ele retornará automaticamente um desses códigos de status.

!!! tip "Dica"
Para saber mais sobre cada código de status e qual código serve para quê, verifique o <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN</abbr> documentação sobre códigos de status HTTP</a>.

## Atalho para lembrar os nomes

Vamos ver o exemplo anterior novamente:

```Python hl_lines="6"
{!../../../docs_src/response_status_code/tutorial001.py!}
```

`201` é o código de status para "Criado".

Mas você não precisa memorizar o que cada um desses códigos significa.

Você pode usar as variáveis de conveniência de `fastapi.status`.

```Python hl_lines="1 6"
{!../../../docs_src/response_status_code/tutorial002.py!}
```

Eles são apenas uma conveniência, eles possuem o mesmo número, mas dessa forma você pode usar o autocomplete do editor para encontrá-los:

<img src="/img/tutorial/response-status-code/image02.png">

!!! note "Detalhes técnicos"
Você também pode usar `from starlette import status`.

**FastAPI** fornece o mesmo `starlette.status` como `fastapi.status` apenas como uma conveniência para você, o desenvolvedor. Mas vem diretamente da Starlette.


## Alterando o padrão

Mais tarde, no [Guia do usuário avançado](../advanced/response-change-status-code.md){.internal-link target=_blank}, você verá como retornar um código de status diferente do padrão que você está declarando aqui.
1 change: 1 addition & 0 deletions docs/pt/mkdocs.yml
Expand Up @@ -71,6 +71,7 @@ nav:
- tutorial/query-params-str-validations.md
- tutorial/cookie-params.md
- tutorial/header-params.md
- tutorial/response-status-code.md
- tutorial/handling-errors.md
- Segurança:
- tutorial/security/index.md
Expand Down
5 changes: 4 additions & 1 deletion pyproject.toml
Expand Up @@ -137,5 +137,8 @@ filterwarnings = [
'ignore:The loop argument is deprecated since Python 3\.8, and scheduled for removal in Python 3\.10:DeprecationWarning:asyncio',
'ignore:starlette.middleware.wsgi is deprecated and will be removed in a future release\..*:DeprecationWarning:starlette',
# see https://trio.readthedocs.io/en/stable/history.html#trio-0-22-0-2022-09-28
'ignore::trio.TrioDeprecationWarning',
"ignore:You seem to already have a custom.*:RuntimeWarning:trio",
"ignore::trio.TrioDeprecationWarning",
# TODO remove pytest-cov
'ignore::pytest.PytestDeprecationWarning:pytest_cov',
]

0 comments on commit cee2a02

Please sign in to comment.