mirror of https://github.com/tiangolo/fastapi.git
Merge remote-tracking branch 'upstream/master' into feat/exception-on-duplicate-path
This commit is contained in:
commit
4fb72a448b
|
|
@ -58,6 +58,7 @@ The key features are:
|
|||
<a href="https://careers.powens.com/" target="_blank" title="Powens is hiring!"><img src="https://fastapi.tiangolo.com/img/sponsors/powens.png"></a>
|
||||
<a href="https://databento.com/" target="_blank" title="Pay as you go for market data"><img src="https://fastapi.tiangolo.com/img/sponsors/databento.svg"></a>
|
||||
<a href="https://speakeasyapi.dev?utm_source=fastapi+repo&utm_medium=github+sponsorship" target="_blank" title="SDKs for your API | Speakeasy"><img src="https://fastapi.tiangolo.com/img/sponsors/speakeasy.png"></a>
|
||||
<a href="https://www.svix.com/" target="_blank" title="Svix - Webhooks as a service"><img src="https://fastapi.tiangolo.com/img/sponsors/svix.svg"></a>
|
||||
|
||||
<!-- /sponsors -->
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,9 @@ silver:
|
|||
- url: https://speakeasyapi.dev?utm_source=fastapi+repo&utm_medium=github+sponsorship
|
||||
title: SDKs for your API | Speakeasy
|
||||
img: https://fastapi.tiangolo.com/img/sponsors/speakeasy.png
|
||||
- url: https://www.svix.com/
|
||||
title: Svix - Webhooks as a service
|
||||
img: https://fastapi.tiangolo.com/img/sponsors/svix.svg
|
||||
bronze:
|
||||
- url: https://www.exoflare.com/open-source/?utm_source=FastAPI&utm_campaign=open_source
|
||||
title: Biosecurity risk assessments made easy.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ logins:
|
|||
- ObliviousAI
|
||||
- Doist
|
||||
- nihpo
|
||||
- svix
|
||||
- armand-sauzay
|
||||
- databento-bot
|
||||
- nanram22
|
||||
|
|
@ -20,3 +19,4 @@ logins:
|
|||
- porter-dev
|
||||
- fern-api
|
||||
- ndimares
|
||||
- svixhq
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
## Latest Changes
|
||||
|
||||
* 🌐 Add Polish translation for `docs/pl/docs/help-fastapi.md`. PR [#10121](https://github.com/tiangolo/fastapi/pull/10121) by [@romabozhanovgithub](https://github.com/romabozhanovgithub).
|
||||
* 🌐 Add Russian translation for `docs/ru/docs/tutorial/header-params.md`. PR [#10226](https://github.com/tiangolo/fastapi/pull/10226) by [@AlertRED](https://github.com/AlertRED).
|
||||
* 🌐 Add Chinese translation for `docs/zh/docs/deployment/versions.md`. PR [#10276](https://github.com/tiangolo/fastapi/pull/10276) by [@xzmeng](https://github.com/xzmeng).
|
||||
* 🔧 Update sponsors, enable Svix (revert #10228). PR [#10253](https://github.com/tiangolo/fastapi/pull/10253) by [@tiangolo](https://github.com/tiangolo).
|
||||
* 🔧 Update sponsors, remove Svix. PR [#10228](https://github.com/tiangolo/fastapi/pull/10228) by [@tiangolo](https://github.com/tiangolo).
|
||||
* 🔧 Update sponsors, add Bump.sh. PR [#10227](https://github.com/tiangolo/fastapi/pull/10227) by [@tiangolo](https://github.com/tiangolo).
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,265 @@
|
|||
# Pomóż FastAPI - Uzyskaj pomoc
|
||||
|
||||
Czy podoba Ci się **FastAPI**?
|
||||
|
||||
Czy chciałbyś pomóc FastAPI, jego użytkownikom i autorowi?
|
||||
|
||||
Może napotkałeś na trudności z **FastAPI** i potrzebujesz pomocy?
|
||||
|
||||
Istnieje kilka bardzo łatwych sposobów, aby pomóc (czasami wystarczy jedno lub dwa kliknięcia).
|
||||
|
||||
Istnieje również kilka sposobów uzyskania pomocy.
|
||||
|
||||
## Zapisz się do newslettera
|
||||
|
||||
Możesz zapisać się do rzadkiego [newslettera o **FastAPI i jego przyjaciołach**](/newsletter/){.internal-link target=_blank}, aby być na bieżąco z:
|
||||
|
||||
* Aktualnościami o FastAPI i przyjaciołach 🚀
|
||||
* Przewodnikami 📝
|
||||
* Funkcjami ✨
|
||||
* Przełomowymi zmianami 🚨
|
||||
* Poradami i sztuczkami ✅
|
||||
|
||||
## Śledź FastAPI na Twitterze
|
||||
|
||||
<a href="https://twitter.com/fastapi" class="external-link" target="_blank">Śledź @fastapi na **Twitterze**</a> aby być na bieżąco z najnowszymi wiadomościami o **FastAPI**. 🐦
|
||||
|
||||
## Dodaj gwiazdkę **FastAPI** na GitHubie
|
||||
|
||||
Możesz "dodać gwiazdkę" FastAPI na GitHubie (klikając przycisk gwiazdki w prawym górnym rogu): <a href="https://github.com/tiangolo/fastapi" class="external-link" target="_blank">https://github.com/tiangolo/fastapi</a>. ⭐️
|
||||
|
||||
Dodając gwiazdkę, inni użytkownicy będą mogli łatwiej znaleźć projekt i zobaczyć, że był już przydatny dla innych.
|
||||
|
||||
## Obserwuj repozytorium GitHub w poszukiwaniu nowych wydań
|
||||
|
||||
Możesz "obserwować" FastAPI na GitHubie (klikając przycisk "obserwuj" w prawym górnym rogu): <a href="https://github.com/tiangolo/fastapi" class="external-link" target="_blank">https://github.com/tiangolo/fastapi</a>. 👀
|
||||
|
||||
Wybierz opcję "Tylko wydania".
|
||||
|
||||
Dzięki temu będziesz otrzymywać powiadomienia (na swój adres e-mail) za każdym razem, gdy pojawi się nowe wydanie (nowa wersja) **FastAPI** z poprawkami błędów i nowymi funkcjami.
|
||||
|
||||
## Skontaktuj się z autorem
|
||||
|
||||
Możesz skontaktować się <a href="https://tiangolo.com" class="external-link" target="_blank">ze mną (Sebastián Ramírez / `tiangolo`)</a>, autorem.
|
||||
|
||||
Możesz:
|
||||
|
||||
* <a href="https://github.com/tiangolo" class="external-link" target="_blank">Śledzić mnie na **GitHubie**</a>.
|
||||
* Zobacz inne projekty open source, które stworzyłem, a mogą być dla Ciebie pomocne.
|
||||
* Śledź mnie, aby dostać powiadomienie, gdy utworzę nowy projekt open source.
|
||||
* <a href="https://twitter.com/tiangolo" class="external-link" target="_blank">Śledzić mnie na **Twitterze**</a> lub na <a href="https://fosstodon.org/@tiangolo" class="external-link" target="_blank">Mastodonie</a>.
|
||||
* Napisz mi, w jaki sposób korzystasz z FastAPI (uwielbiam o tym czytać).
|
||||
* Dowiedz się, gdy ogłoszę coś nowego lub wypuszczę nowe narzędzia.
|
||||
* Możesz także <a href="https://twitter.com/fastapi" class="external-link" target="_blank">śledzić @fastapi na Twitterze</a> (to oddzielne konto).
|
||||
* <a href="https://www.linkedin.com/in/tiangolo/" class="external-link" target="_blank">Nawiąż ze mną kontakt na **Linkedinie**</a>.
|
||||
* Dowiedz się, gdy ogłoszę coś nowego lub wypuszczę nowe narzędzia (chociaż częściej korzystam z Twittera 🤷♂).
|
||||
* Czytaj moje posty (lub śledź mnie) na <a href="https://dev.to/tiangolo" class="external-link" target="_blank">**Dev.to**</a> lub na <a href="https://medium.com/@tiangolo" class="external-link" target="_blank">**Medium**</a>.
|
||||
* Czytaj o innych pomysłach, artykułach i dowiedz się o narzędziach, które stworzyłem.
|
||||
* Śledź mnie, by wiedzieć gdy opublikuję coś nowego.
|
||||
|
||||
## Napisz tweeta o **FastAPI**
|
||||
|
||||
<a href="https://twitter.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/tiangolo/fastapi" class="external-link" target="_blank">Napisz tweeta o **FastAPI**</a> i powiedz czemu Ci się podoba. 🎉
|
||||
|
||||
Uwielbiam czytać w jaki sposób **FastAPI** jest używane, co Ci się w nim podobało, w jakim projekcie/firmie go używasz itp.
|
||||
|
||||
## Głosuj na FastAPI
|
||||
|
||||
* <a href="https://www.slant.co/options/34241/~fastapi-review" class="external-link" target="_blank">Głosuj na **FastAPI** w Slant</a>.
|
||||
* <a href="https://alternativeto.net/software/fastapi/" class="external-link" target="_blank">Głosuj na **FastAPI** w AlternativeTo</a>.
|
||||
* <a href="https://stackshare.io/pypi-fastapi" class="external-link" target="_blank">Powiedz, że używasz **FastAPI** na StackShare</a>.
|
||||
|
||||
## Pomagaj innym, odpowiadając na ich pytania na GitHubie
|
||||
|
||||
Możesz spróbować pomóc innym, odpowiadając w:
|
||||
|
||||
* <a href="https://github.com/tiangolo/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered" class="external-link" target="_blank">Dyskusjach na GitHubie</a>
|
||||
* <a href="https://github.com/tiangolo/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+" class="external-link" target="_blank">Problemach na GitHubie</a>
|
||||
|
||||
W wielu przypadkach możesz już znać odpowiedź na te pytania. 🤓
|
||||
|
||||
Jeśli pomożesz wielu ludziom, możesz zostać oficjalnym [Ekspertem FastAPI](fastapi-people.md#experts){.internal-link target=_blank}. 🎉
|
||||
|
||||
Pamiętaj tylko o najważniejszym: bądź życzliwy. Ludzie przychodzą sfrustrowani i w wielu przypadkach nie zadają pytań w najlepszy sposób, ale mimo to postaraj się być dla nich jak najbardziej życzliwy. 🤗
|
||||
|
||||
Chciałbym, by społeczność **FastAPI** była życzliwa i przyjazna. Nie akceptuj prześladowania ani braku szacunku wobec innych. Dbajmy o siebie nawzajem.
|
||||
|
||||
---
|
||||
|
||||
Oto, jak pomóc innym z pytaniami (w dyskusjach lub problemach):
|
||||
|
||||
### Zrozum pytanie
|
||||
|
||||
* Upewnij się, czy rozumiesz **cel** i przypadek użycia osoby pytającej.
|
||||
|
||||
* Następnie sprawdź, czy pytanie (większość to pytania) jest **jasne**.
|
||||
|
||||
* W wielu przypadkach zadane pytanie dotyczy rozwiązania wymyślonego przez użytkownika, ale może istnieć **lepsze** rozwiązanie. Jeśli dokładnie zrozumiesz problem i przypadek użycia, być może będziesz mógł zaproponować lepsze **alternatywne rozwiązanie**.
|
||||
|
||||
* Jeśli nie rozumiesz pytania, poproś o więcej **szczegółów**.
|
||||
|
||||
### Odtwórz problem
|
||||
|
||||
W większości przypadków problem wynika z **autorskiego kodu** osoby pytającej.
|
||||
|
||||
Często pytający umieszczają tylko fragment kodu, niewystarczający do **odtworzenia problemu**.
|
||||
|
||||
* Możesz poprosić ich o dostarczenie <a href="https://stackoverflow.com/help/minimal-reproducible-example" class="external-link" target="_blank">minimalnego, odtwarzalnego przykładu</a>, który możesz **skopiować i wkleić** i uruchomić lokalnie, aby zobaczyć ten sam błąd lub zachowanie, które widzą, lub lepiej zrozumieć ich przypadki użycia.
|
||||
|
||||
* Jeśli jesteś wyjątkowo pomocny, możesz spróbować **stworzyć taki przykład** samodzielnie, opierając się tylko na opisie problemu. Miej na uwadze, że może to zająć dużo czasu i lepiej może być najpierw poprosić ich o wyjaśnienie problemu.
|
||||
|
||||
### Proponuj rozwiązania
|
||||
|
||||
* Po zrozumieniu pytania możesz podać im możliwą **odpowiedź**.
|
||||
|
||||
* W wielu przypadkach lepiej zrozumieć ich **podstawowy problem lub przypadek użycia**, ponieważ może istnieć lepszy sposób rozwiązania niż to, co próbują zrobić.
|
||||
|
||||
### Poproś o zamknięcie
|
||||
|
||||
Jeśli odpowiedzą, jest duża szansa, że rozwiązałeś ich problem, gratulacje, **jesteś bohaterem**! 🦸
|
||||
|
||||
* Jeśli Twoja odpowiedź rozwiązała problem, możesz poprosić o:
|
||||
|
||||
* W Dyskusjach na GitHubie: oznaczenie komentarza jako **odpowiedź**.
|
||||
* W Problemach na GitHubie: **zamknięcie** problemu.
|
||||
|
||||
## Obserwuj repozytorium na GitHubie
|
||||
|
||||
Możesz "obserwować" FastAPI na GitHubie (klikając przycisk "obserwuj" w prawym górnym rogu): <a href="https://github.com/tiangolo/fastapi" class="external-link" target="_blank">https://github.com/tiangolo/fastapi</a>. 👀
|
||||
|
||||
Jeśli wybierzesz "Obserwuj" zamiast "Tylko wydania", otrzymasz powiadomienia, gdy ktoś utworzy nowy problem lub pytanie. Możesz również określić, że chcesz być powiadamiany tylko o nowych problemach, dyskusjach, PR-ach itp.
|
||||
|
||||
Następnie możesz spróbować pomóc rozwiązać te problemy.
|
||||
|
||||
## Zadawaj pytania
|
||||
|
||||
Możesz <a href="https://github.com/tiangolo/fastapi/discussions/new?category=questions" class="external-link" target="_blank">utworzyć nowe pytanie</a> w repozytorium na GitHubie, na przykład aby:
|
||||
|
||||
* Zadać **pytanie** lub zapytać o **problem**.
|
||||
* Zaproponować nową **funkcję**.
|
||||
|
||||
**Uwaga**: jeśli to zrobisz, poproszę Cię również o pomoc innym. 😉
|
||||
|
||||
## Przeglądaj Pull Requesty
|
||||
|
||||
Możesz pomóc mi w przeglądaniu pull requestów autorstwa innych osób.
|
||||
|
||||
Jak wcześniej wspomniałem, postaraj się być jak najbardziej życzliwy. 🤗
|
||||
|
||||
---
|
||||
|
||||
Oto, co warto mieć na uwadze podczas oceny pull requestu:
|
||||
|
||||
### Zrozum problem
|
||||
|
||||
* Najpierw upewnij się, że **rozumiesz problem**, który próbuje rozwiązać pull request. Może być osadzony w większym kontekście w GitHubowej dyskusji lub problemie.
|
||||
|
||||
* Jest też duża szansa, że pull request nie jest konieczny, ponieważ problem można rozwiązać w **inny sposób**. Wtedy możesz to zasugerować lub o to zapytać.
|
||||
|
||||
### Nie martw się stylem
|
||||
|
||||
* Nie przejmuj się zbytnio rzeczami takimi jak style wiadomości commitów, przy wcielaniu pull requesta łączę commity i modyfikuję opis sumarycznego commita ręcznie.
|
||||
|
||||
* Nie przejmuj się również stylem kodu, automatyczne narzędzia w repozytorium sprawdzają to samodzielnie.
|
||||
|
||||
A jeśli istnieje jakaś konkretna potrzeba dotycząca stylu lub spójności, sam poproszę o zmiany lub dodam commity z takimi zmianami.
|
||||
|
||||
### Sprawdź kod
|
||||
|
||||
* Przeczytaj kod, zastanów się czy ma sens, **uruchom go lokalnie** i potwierdź czy faktycznie rozwiązuje problem.
|
||||
|
||||
* Następnie dodaj **komentarz** z informacją o tym, że sprawdziłeś kod, dzięki temu będę miał pewność, że faktycznie go sprawdziłeś.
|
||||
|
||||
!!! info
|
||||
Niestety, nie mogę ślepo ufać PR-om, nawet jeśli mają kilka zatwierdzeń.
|
||||
|
||||
Kilka razy zdarzyło się, że PR-y miały 3, 5 lub więcej zatwierdzeń (prawdopodobnie dlatego, że opis obiecuje rozwiązanie ważnego problemu), ale gdy sam sprawdziłem danego PR-a, okazał się być zbugowany lub nie rozwiązywał problemu, który rzekomo miał rozwiązywać. 😅
|
||||
|
||||
Dlatego tak ważne jest, abyś faktycznie przeczytał i uruchomił kod oraz napisał w komentarzu, że to zrobiłeś. 🤓
|
||||
|
||||
* Jeśli PR można uprościć w jakiś sposób, możesz o to poprosić, ale nie ma potrzeby być zbyt wybrednym, może być wiele subiektywnych punktów widzenia (a ja też będę miał swój 🙈), więc lepiej żebyś skupił się na kluczowych rzeczach.
|
||||
|
||||
### Testy
|
||||
|
||||
* Pomóż mi sprawdzić, czy PR ma **testy**.
|
||||
|
||||
* Sprawdź, czy testy **nie przechodzą** przed PR. 🚨
|
||||
|
||||
* Następnie sprawdź, czy testy **przechodzą** po PR. ✅
|
||||
|
||||
* Wiele PR-ów nie ma testów, możesz **przypomnieć** im o dodaniu testów, a nawet **zaproponować** samemu jakieś testy. To jedna z rzeczy, które pochłaniają najwięcej czasu i możesz w tym bardzo pomóc.
|
||||
|
||||
* Następnie skomentuj również to, czego spróbowałeś, wtedy będę wiedział, że to sprawdziłeś. 🤓
|
||||
|
||||
## Utwórz Pull Request
|
||||
|
||||
Możesz [wnieść wkład](contributing.md){.internal-link target=_blank} do kodu źródłowego za pomocą Pull Requestu, na przykład:
|
||||
|
||||
* Naprawić literówkę, którą znalazłeś w dokumentacji.
|
||||
* Podzielić się artykułem, filmem lub podcastem, który stworzyłeś lub znalazłeś na temat FastAPI, <a href="https://github.com/tiangolo/fastapi/edit/master/docs/en/data/external_links.yml" class="external-link" target="_blank">edytując ten plik</a>.
|
||||
* Upewnij się, że dodajesz swój link na początku odpowiedniej sekcji.
|
||||
* Pomóc w [tłumaczeniu dokumentacji](contributing.md#translations){.internal-link target=_blank} na Twój język.
|
||||
* Możesz również pomóc w weryfikacji tłumaczeń stworzonych przez innych.
|
||||
* Zaproponować nowe sekcje dokumentacji.
|
||||
* Naprawić istniejący problem/błąd.
|
||||
* Upewnij się, że dodajesz testy.
|
||||
* Dodać nową funkcję.
|
||||
* Upewnij się, że dodajesz testy.
|
||||
* Upewnij się, że dodajesz dokumentację, jeśli jest to istotne.
|
||||
|
||||
## Pomóż w utrzymaniu FastAPI
|
||||
|
||||
Pomóż mi utrzymać **FastAPI**! 🤓
|
||||
|
||||
Jest wiele pracy do zrobienia, a w większości przypadków **TY** możesz to zrobić.
|
||||
|
||||
Główne zadania, które możesz wykonać teraz to:
|
||||
|
||||
* [Pomóc innym z pytaniami na GitHubie](#help-others-with-questions-in-github){.internal-link target=_blank} (zobacz sekcję powyżej).
|
||||
* [Oceniać Pull Requesty](#review-pull-requests){.internal-link target=_blank} (zobacz sekcję powyżej).
|
||||
|
||||
Te dwie czynności **zajmują najwięcej czasu**. To główna praca związana z utrzymaniem FastAPI.
|
||||
|
||||
Jeśli możesz mi w tym pomóc, **pomożesz mi utrzymać FastAPI** i zapewnisz że będzie **rozwijać się szybciej i lepiej**. 🚀
|
||||
|
||||
## Dołącz do czatu
|
||||
|
||||
Dołącz do 👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank">serwera czatu na Discordzie</a> 👥 i spędzaj czas z innymi w społeczności FastAPI.
|
||||
|
||||
!!! wskazówka
|
||||
Jeśli masz pytania, zadaj je w <a href="https://github.com/tiangolo/fastapi/discussions/new?category=questions" class="external-link" target="_blank">Dyskusjach na GitHubie</a>, jest dużo większa szansa, że otrzymasz pomoc od [Ekspertów FastAPI](fastapi-people.md#experts){.internal-link target=_blank}.
|
||||
|
||||
Używaj czatu tylko do innych ogólnych rozmów.
|
||||
|
||||
Istnieje również poprzedni <a href="https://gitter.im/tiangolo/fastapi" class="external-link" target="_blank">czat na Gitter</a>, ale ponieważ nie ma tam kanałów i zaawansowanych funkcji, rozmowy są trudniejsze, dlatego teraz zalecany jest Discord.
|
||||
|
||||
### Nie zadawaj pytań na czacie
|
||||
|
||||
Miej na uwadze, że ponieważ czaty pozwalają na bardziej "swobodną rozmowę", łatwo jest zadawać pytania, które są zbyt ogólne i trudniejsze do odpowiedzi, więc możesz nie otrzymać odpowiedzi.
|
||||
|
||||
Na GitHubie szablon poprowadzi Cię do napisania odpowiedniego pytania, dzięki czemu łatwiej uzyskasz dobrą odpowiedź, a nawet rozwiążesz problem samodzielnie, zanim zapytasz. Ponadto na GitHubie mogę się upewnić, że zawsze odpowiadam na wszystko, nawet jeśli zajmuje to trochę czasu. Osobiście nie mogę tego zrobić z systemami czatu. 😅
|
||||
|
||||
Rozmów w systemach czatu nie można tak łatwo przeszukiwać, jak na GitHubie, więc pytania i odpowiedzi mogą zaginąć w rozmowie. A tylko te na GitHubie liczą się do zostania [Ekspertem FastAPI](fastapi-people.md#experts){.internal-link target=_blank}, więc najprawdopodobniej otrzymasz więcej uwagi na GitHubie.
|
||||
|
||||
Z drugiej strony w systemach czatu są tysiące użytkowników, więc jest duża szansa, że znajdziesz tam kogoś do rozmowy, prawie w każdej chwili. 😄
|
||||
|
||||
## Wspieraj autora
|
||||
|
||||
Możesz również finansowo wesprzeć autora (mnie) poprzez <a href="https://github.com/sponsors/tiangolo" class="external-link" target="_blank">sponsoring na GitHubie</a>.
|
||||
|
||||
Tam możesz postawić mi kawę ☕️ aby podziękować. 😄
|
||||
|
||||
Możesz także zostać srebrnym lub złotym sponsorem FastAPI. 🏅🎉
|
||||
|
||||
## Wspieraj narzędzia, które napędzają FastAPI
|
||||
|
||||
Jak widziałeś w dokumentacji, FastAPI stoi na ramionach gigantów, Starlette i Pydantic.
|
||||
|
||||
Możesz również wesprzeć:
|
||||
|
||||
* <a href="https://github.com/sponsors/samuelcolvin" class="external-link" target="_blank">Samuel Colvin (Pydantic)</a>
|
||||
* <a href="https://github.com/sponsors/encode" class="external-link" target="_blank">Encode (Starlette, Uvicorn)</a>
|
||||
|
||||
---
|
||||
|
||||
Dziękuję! 🚀
|
||||
|
|
@ -0,0 +1,227 @@
|
|||
# Header-параметры
|
||||
|
||||
Вы можете определить параметры заголовка таким же образом, как вы определяете параметры `Query`, `Path` и `Cookie`.
|
||||
|
||||
## Импорт `Header`
|
||||
|
||||
Сперва импортируйте `Header`:
|
||||
|
||||
=== "Python 3.10+"
|
||||
|
||||
```Python hl_lines="3"
|
||||
{!> ../../../docs_src/header_params/tutorial001_an_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.9+"
|
||||
|
||||
```Python hl_lines="3"
|
||||
{!> ../../../docs_src/header_params/tutorial001_an_py39.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+"
|
||||
|
||||
```Python hl_lines="3"
|
||||
{!> ../../../docs_src/header_params/tutorial001_an.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.10+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="1"
|
||||
{!> ../../../docs_src/header_params/tutorial001_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="3"
|
||||
{!> ../../../docs_src/header_params/tutorial001.py!}
|
||||
```
|
||||
|
||||
## Объявление параметров `Header`
|
||||
|
||||
Затем объявите параметры заголовка, используя ту же структуру, что и с `Path`, `Query` и `Cookie`.
|
||||
|
||||
Первое значение является значением по умолчанию, вы можете передать все дополнительные параметры валидации или аннотации:
|
||||
|
||||
=== "Python 3.10+"
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial001_an_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.9+"
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial001_an_py39.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+"
|
||||
|
||||
```Python hl_lines="10"
|
||||
{!> ../../../docs_src/header_params/tutorial001_an.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.10+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="7"
|
||||
{!> ../../../docs_src/header_params/tutorial001_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial001.py!}
|
||||
```
|
||||
|
||||
!!! note "Технические детали"
|
||||
`Header` - это "родственный" класс `Path`, `Query` и `Cookie`. Он также наследуется от того же общего класса `Param`.
|
||||
|
||||
Но помните, что когда вы импортируете `Query`, `Path`, `Header` и другие из `fastapi`, на самом деле это функции, которые возвращают специальные классы.
|
||||
|
||||
!!! info "Дополнительная информация"
|
||||
Чтобы объявить заголовки, важно использовать `Header`, иначе параметры интерпретируются как query-параметры.
|
||||
|
||||
## Автоматическое преобразование
|
||||
|
||||
`Header` обладает небольшой дополнительной функциональностью в дополнение к тому, что предоставляют `Path`, `Query` и `Cookie`.
|
||||
|
||||
Большинство стандартных заголовков разделены символом "дефис", также известным как "минус" (`-`).
|
||||
|
||||
Но переменная вроде `user-agent` недопустима в Python.
|
||||
|
||||
По умолчанию `Header` преобразует символы имен параметров из символа подчеркивания (`_`) в дефис (`-`) для извлечения и документирования заголовков.
|
||||
|
||||
Кроме того, HTTP-заголовки не чувствительны к регистру, поэтому вы можете объявить их в стандартном стиле Python (также известном как "snake_case").
|
||||
|
||||
Таким образом вы можете использовать `user_agent`, как обычно, в коде Python, вместо того, чтобы вводить заглавные буквы как `User_Agent` или что-то подобное.
|
||||
|
||||
Если по какой-либо причине вам необходимо отключить автоматическое преобразование подчеркиваний в дефисы, установите для параметра `convert_underscores` в `Header` значение `False`:
|
||||
|
||||
=== "Python 3.10+"
|
||||
|
||||
```Python hl_lines="10"
|
||||
{!> ../../../docs_src/header_params/tutorial002_an_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.9+"
|
||||
|
||||
```Python hl_lines="11"
|
||||
{!> ../../../docs_src/header_params/tutorial002_an_py39.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+"
|
||||
|
||||
```Python hl_lines="12"
|
||||
{!> ../../../docs_src/header_params/tutorial002_an.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.10+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="8"
|
||||
{!> ../../../docs_src/header_params/tutorial002_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="10"
|
||||
{!> ../../../docs_src/header_params/tutorial002.py!}
|
||||
```
|
||||
|
||||
!!! warning "Внимание"
|
||||
Прежде чем установить для `convert_underscores` значение `False`, имейте в виду, что некоторые HTTP-прокси и серверы запрещают использование заголовков с подчеркиванием.
|
||||
|
||||
## Повторяющиеся заголовки
|
||||
|
||||
Есть возможность получать несколько заголовков с одним и тем же именем, но разными значениями.
|
||||
|
||||
Вы можете определить эти случаи, используя список в объявлении типа.
|
||||
|
||||
Вы получите все значения из повторяющегося заголовка в виде `list` Python.
|
||||
|
||||
Например, чтобы объявить заголовок `X-Token`, который может появляться более одного раза, вы можете написать:
|
||||
|
||||
=== "Python 3.10+"
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial003_an_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.9+"
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial003_an_py39.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+"
|
||||
|
||||
```Python hl_lines="10"
|
||||
{!> ../../../docs_src/header_params/tutorial003_an.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.10+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="7"
|
||||
{!> ../../../docs_src/header_params/tutorial003_py310.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.9+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial003_py39.py!}
|
||||
```
|
||||
|
||||
=== "Python 3.6+ без Annotated"
|
||||
|
||||
!!! tip "Подсказка"
|
||||
Предпочтительнее использовать версию с аннотацией, если это возможно.
|
||||
|
||||
```Python hl_lines="9"
|
||||
{!> ../../../docs_src/header_params/tutorial003.py!}
|
||||
```
|
||||
|
||||
Если вы взаимодействуете с этой *операцией пути*, отправляя два HTTP-заголовка, таких как:
|
||||
|
||||
```
|
||||
X-Token: foo
|
||||
X-Token: bar
|
||||
```
|
||||
|
||||
Ответ был бы таким:
|
||||
|
||||
```JSON
|
||||
{
|
||||
"X-Token values": [
|
||||
"bar",
|
||||
"foo"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Резюме
|
||||
|
||||
Объявляйте заголовки с помощью `Header`, используя тот же общий шаблон, как при `Query`, `Path` и `Cookie`.
|
||||
|
||||
И не беспокойтесь о символах подчеркивания в ваших переменных, **FastAPI** позаботится об их преобразовании.
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
# 关于 FastAPI 版本
|
||||
|
||||
**FastAPI** 已在许多应用程序和系统的生产环境中使用。 并且测试覆盖率保持在100%。 但其开发进度仍在快速推进。
|
||||
|
||||
经常添加新功能,定期修复错误,并且代码仍在持续改进。
|
||||
|
||||
这就是为什么当前版本仍然是`0.x.x`,这反映出每个版本都可能有Breaking changes。 这遵循<a href="https://semver.org/" class="external-link" target="_blank">语义版本控制</a>的约定。
|
||||
|
||||
你现在就可以使用 **FastAPI** 创建生产环境应用程序(你可能已经这样做了一段时间),你只需确保使用的版本可以与其余代码正确配合即可。
|
||||
|
||||
## 固定你的 `fastapi` 版本
|
||||
|
||||
你应该做的第一件事是将你正在使用的 **FastAPI** 版本“固定”到你知道适用于你的应用程序的特定最新版本。
|
||||
|
||||
例如,假设你在应用程序中使用版本`0.45.0`。
|
||||
|
||||
如果你使用`requirements.txt`文件,你可以使用以下命令指定版本:
|
||||
|
||||
````txt
|
||||
fastapi==0.45.0
|
||||
````
|
||||
|
||||
这意味着你将使用版本`0.45.0`。
|
||||
|
||||
或者你也可以将其固定为:
|
||||
|
||||
````txt
|
||||
fastapi>=0.45.0,<0.46.0
|
||||
````
|
||||
|
||||
这意味着你将使用`0.45.0`或更高版本,但低于`0.46.0`,例如,版本`0.45.2`仍会被接受。
|
||||
|
||||
如果你使用任何其他工具来管理你的安装,例如 Poetry、Pipenv 或其他工具,它们都有一种定义包的特定版本的方法。
|
||||
|
||||
## 可用版本
|
||||
|
||||
你可以在[发行说明](../release-notes.md){.internal-link target=_blank}中查看可用版本(例如查看当前最新版本)。
|
||||
|
||||
## 关于版本
|
||||
|
||||
遵循语义版本控制约定,任何低于`1.0.0`的版本都可能会添加 breaking changes。
|
||||
|
||||
FastAPI 还遵循这样的约定:任何`PATCH`版本更改都是为了bug修复和non-breaking changes。
|
||||
|
||||
!!! tip
|
||||
"PATCH"是最后一个数字,例如,在`0.2.3`中,PATCH版本是`3`。
|
||||
|
||||
因此,你应该能够固定到如下版本:
|
||||
|
||||
```txt
|
||||
fastapi>=0.45.0,<0.46.0
|
||||
```
|
||||
|
||||
"MINOR"版本中会添加breaking changes和新功能。
|
||||
|
||||
!!! tip
|
||||
"MINOR"是中间的数字,例如,在`0.2.3`中,MINOR版本是`2`。
|
||||
|
||||
## 升级FastAPI版本
|
||||
|
||||
你应该为你的应用程序添加测试。
|
||||
|
||||
使用 **FastAPI** 编写测试非常简单(感谢 Starlette),请参考文档:[测试](../tutorial/testing.md){.internal-link target=_blank}
|
||||
|
||||
添加测试后,你可以将 **FastAPI** 版本升级到更新版本,并通过运行测试来确保所有代码都能正常工作。
|
||||
|
||||
如果一切正常,或者在进行必要的更改之后,并且所有测试都通过了,那么你可以将`fastapi`固定到新的版本。
|
||||
|
||||
## 关于Starlette
|
||||
|
||||
你不应该固定`starlette`的版本。
|
||||
|
||||
不同版本的 **FastAPI** 将使用特定的较新版本的 Starlette。
|
||||
|
||||
因此,**FastAPI** 自己可以使用正确的 Starlette 版本。
|
||||
|
||||
## 关于 Pydantic
|
||||
|
||||
Pydantic 包含针对 **FastAPI** 的测试及其自己的测试,因此 Pydantic 的新版本(`1.0.0`以上)始终与 FastAPI 兼容。
|
||||
|
||||
你可以将 Pydantic 固定到适合你的`1.0.0`以上和`2.0.0`以下的任何版本。
|
||||
|
||||
例如:
|
||||
|
||||
````txt
|
||||
pydantic>=1.2.0,<2.0.0
|
||||
````
|
||||
Loading…
Reference in New Issue