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