7 changed files with 588 additions and 1 deletions
@ -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