Skip to content

Commit f502f51

Browse files
authored
Merge branch 'master' into doc-improvements
2 parents 91282c1 + 3425c83 commit f502f51

48 files changed

Lines changed: 2433 additions & 505 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-docs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
uses: actions/setup-python@v5
4646
with:
4747
python-version: "3.11"
48-
- uses: actions/cache@v3
48+
- uses: actions/cache@v4
4949
id: cache
5050
with:
5151
path: ${{ env.pythonLocation }}
@@ -86,7 +86,7 @@ jobs:
8686
uses: actions/setup-python@v5
8787
with:
8888
python-version: "3.11"
89-
- uses: actions/cache@v3
89+
- uses: actions/cache@v4
9090
id: cache
9191
with:
9292
path: ${{ env.pythonLocation }}
@@ -102,7 +102,7 @@ jobs:
102102
pip install git+https://${{ secrets.FASTAPI_MKDOCS_MATERIAL_INSIDERS }}@github.com/pawamoy-insiders/mkdocstrings-python.git
103103
- name: Update Languages
104104
run: python ./scripts/docs.py update-languages
105-
- uses: actions/cache@v3
105+
- uses: actions/cache@v4
106106
with:
107107
key: mkdocs-cards-${{ matrix.lang }}-${{ github.ref }}
108108
path: docs/${{ matrix.lang }}/.cache

.github/workflows/publish.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,17 @@ jobs:
2121
# Issue ref: https://github.com/actions/setup-python/issues/436
2222
# cache: "pip"
2323
# cache-dependency-path: pyproject.toml
24+
- uses: actions/cache@v4
25+
id: cache
26+
with:
27+
path: ${{ env.pythonLocation }}
28+
key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-publish
2429
- name: Install build dependencies
2530
run: pip install build
2631
- name: Build distribution
2732
run: python -m build
2833
- name: Publish
29-
uses: pypa/gh-action-pypi-publish@v1.8.11
34+
uses: pypa/gh-action-pypi-publish@v1.8.14
3035
with:
3136
password: ${{ secrets.PYPI_API_TOKEN }}
3237
- name: Dump GitHub context

.github/workflows/test.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
types:
99
- opened
1010
- synchronize
11+
schedule:
12+
# cron every week on monday
13+
- cron: "0 0 * * 1"
1114

1215
jobs:
1316
lint:
@@ -25,7 +28,7 @@ jobs:
2528
# Issue ref: https://github.com/actions/setup-python/issues/436
2629
# cache: "pip"
2730
# cache-dependency-path: pyproject.toml
28-
- uses: actions/cache@v3
31+
- uses: actions/cache@v4
2932
id: cache
3033
with:
3134
path: ${{ env.pythonLocation }}
@@ -63,7 +66,7 @@ jobs:
6366
# Issue ref: https://github.com/actions/setup-python/issues/436
6467
# cache: "pip"
6568
# cache-dependency-path: pyproject.toml
66-
- uses: actions/cache@v3
69+
- uses: actions/cache@v4
6770
id: cache
6871
with:
6972
path: ${{ env.pythonLocation }}

docs/bn/docs/python-types.md

Lines changed: 537 additions & 0 deletions
Large diffs are not rendered by default.

docs/de/docs/advanced/generate-clients.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Es gibt viele Tools zum Generieren von Clients aus **OpenAPI**.
1010

1111
Ein gängiges Tool ist <a href="https://openapi-generator.tech/" class="external-link" target="_blank">OpenAPI Generator</a>.
1212

13-
Wenn Sie ein **Frontend** erstellen, ist <a href="https://github.com/ferdikoomen/openapi-typescript-codegen" class="external-link" target="_blank">openapi-typescript-codegen</a> eine sehr interessante Alternative.
13+
Wenn Sie ein **Frontend** erstellen, ist <a href="https://github.com/hey-api/openapi-ts" class="external-link" target="_blank">openapi-ts</a> eine sehr interessante Alternative.
1414

1515
## Client- und SDK-Generatoren – Sponsor
1616

@@ -58,14 +58,14 @@ Und dieselben Informationen aus den Modellen, die in OpenAPI enthalten sind, kö
5858

5959
Nachdem wir nun die Anwendung mit den Modellen haben, können wir den Client-Code für das Frontend generieren.
6060

61-
#### `openapi-typescript-codegen` installieren
61+
#### `openapi-ts` installieren
6262

63-
Sie können `openapi-typescript-codegen` in Ihrem Frontend-Code installieren mit:
63+
Sie können `openapi-ts` in Ihrem Frontend-Code installieren mit:
6464

6565
<div class="termy">
6666

6767
```console
68-
$ npm install openapi-typescript-codegen --save-dev
68+
$ npm install @hey-api/openapi-ts --save-dev
6969

7070
---> 100%
7171
```
@@ -74,7 +74,7 @@ $ npm install openapi-typescript-codegen --save-dev
7474

7575
#### Client-Code generieren
7676

77-
Um den Client-Code zu generieren, können Sie das Kommandozeilentool `openapi` verwenden, das soeben installiert wurde.
77+
Um den Client-Code zu generieren, können Sie das Kommandozeilentool `openapi-ts` verwenden, das soeben installiert wurde.
7878

7979
Da es im lokalen Projekt installiert ist, könnten Sie diesen Befehl wahrscheinlich nicht direkt aufrufen, sondern würden ihn in Ihre Datei `package.json` einfügen.
8080

@@ -87,12 +87,12 @@ Diese könnte so aussehen:
8787
"description": "",
8888
"main": "index.js",
8989
"scripts": {
90-
"generate-client": "openapi --input http://localhost:8000/openapi.json --output ./src/client --client axios --useOptions --useUnionTypes"
90+
"generate-client": "openapi-ts --input http://localhost:8000/openapi.json --output ./src/client --client axios"
9191
},
9292
"author": "",
9393
"license": "",
9494
"devDependencies": {
95-
"openapi-typescript-codegen": "^0.20.1",
95+
"@hey-api/openapi-ts": "^0.27.38",
9696
"typescript": "^4.6.2"
9797
}
9898
}
@@ -106,7 +106,7 @@ Nachdem Sie das NPM-Skript `generate-client` dort stehen haben, können Sie es a
106106
$ npm run generate-client
107107

108108
frontend-app@1.0.0 generate-client /home/user/code/frontend-app
109-
> openapi --input http://localhost:8000/openapi.json --output ./src/client --client axios --useOptions --useUnionTypes
109+
> openapi-ts --input http://localhost:8000/openapi.json --output ./src/client --client axios
110110
```
111111

112112
</div>
@@ -254,12 +254,12 @@ Da das Endergebnis nun in einer Datei `openapi.json` vorliegt, würden Sie die `
254254
"description": "",
255255
"main": "index.js",
256256
"scripts": {
257-
"generate-client": "openapi --input ./openapi.json --output ./src/client --client axios --useOptions --useUnionTypes"
257+
"generate-client": "openapi-ts --input ./openapi.json --output ./src/client --client axios"
258258
},
259259
"author": "",
260260
"license": "",
261261
"devDependencies": {
262-
"openapi-typescript-codegen": "^0.20.1",
262+
"@hey-api/openapi-ts": "^0.27.38",
263263
"typescript": "^4.6.2"
264264
}
265265
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Response-Statuscode
2+
3+
So wie ein Responsemodell, können Sie auch einen HTTP-Statuscode für die Response deklarieren, mithilfe des Parameters `status_code`, und zwar in jeder der *Pfadoperationen*:
4+
5+
* `@app.get()`
6+
* `@app.post()`
7+
* `@app.put()`
8+
* `@app.delete()`
9+
* usw.
10+
11+
```Python hl_lines="6"
12+
{!../../../docs_src/response_status_code/tutorial001.py!}
13+
```
14+
15+
!!! note "Hinweis"
16+
Beachten Sie, dass `status_code` ein Parameter der „Dekorator“-Methode ist (`get`, `post`, usw.). Nicht der *Pfadoperation-Funktion*, so wie die anderen Parameter und der Body.
17+
18+
Dem `status_code`-Parameter wird eine Zahl mit dem HTTP-Statuscode übergeben.
19+
20+
!!! info
21+
Alternativ kann `status_code` auch ein `IntEnum` erhalten, so wie Pythons <a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a>.
22+
23+
Das wird:
24+
25+
* Diesen Statuscode mit der Response zurücksenden.
26+
* Ihn als solchen im OpenAPI-Schema dokumentieren (und somit in den Benutzeroberflächen):
27+
28+
<img src="/img/tutorial/response-status-code/image01.png">
29+
30+
!!! note "Hinweis"
31+
Einige Responsecodes (siehe nächster Abschnitt) kennzeichnen, dass die Response keinen Body hat.
32+
33+
FastAPI versteht das und wird in der OpenAPI-Dokumentation anzeigen, dass es keinen Responsebody gibt.
34+
35+
## Über HTTP-Statuscodes
36+
37+
!!! note "Hinweis"
38+
Wenn Sie bereits wissen, was HTTP-Statuscodes sind, überspringen Sie dieses Kapitel und fahren Sie mit dem nächsten fort.
39+
40+
In HTTP senden Sie als Teil der Response einen aus drei Ziffern bestehenden numerischen Statuscode.
41+
42+
Diese Statuscodes haben einen Namen zugeordnet, um sie besser zu erkennen, aber der wichtige Teil ist die Zahl.
43+
44+
Kurz:
45+
46+
* `100` und darüber stehen für „Information“. Diese verwenden Sie selten direkt. Responses mit diesen Statuscodes können keinen Body haben.
47+
* **`200`** und darüber stehen für Responses, die „Successful“ („Erfolgreich“) waren. Diese verwenden Sie am häufigsten.
48+
* `200` ist der Default-Statuscode, welcher bedeutet, alles ist „OK“.
49+
* Ein anderes Beispiel ist `201`, „Created“ („Erzeugt“). Wird in der Regel verwendet, wenn ein neuer Datensatz in der Datenbank erzeugt wurde.
50+
* Ein spezieller Fall ist `204`, „No Content“ („Kein Inhalt“). Diese Response wird verwendet, wenn es keinen Inhalt gibt, der zum Client zurückgeschickt wird, diese Response hat also keinen Body.
51+
* **`300`** und darüber steht für „Redirection“ („Umleitung“). Responses mit diesen Statuscodes können einen oder keinen Body haben, mit Ausnahme von `304`, „Not Modified“ („Nicht verändert“), welche keinen haben darf.
52+
* **`400`** und darüber stehen für „Client error“-Responses („Client-Fehler“). Auch diese verwenden Sie am häufigsten.
53+
* Ein Beispiel ist `404`, für eine „Not Found“-Response („Nicht gefunden“).
54+
* Für allgemeine Fehler beim Client können Sie einfach `400` verwenden.
55+
* `500` und darüber stehen für Server-Fehler. Diese verwenden Sie fast nie direkt. Wenn etwas an irgendeiner Stelle in Ihrem Anwendungscode oder im Server schiefläuft, wird automatisch einer dieser Fehler-Statuscodes zurückgegeben.
56+
57+
!!! tip "Tipp"
58+
Um mehr über Statuscodes zu lernen, und welcher wofür verwendet wird, lesen Sie die <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network – Mozilla-Entwickler-Netzwerk">MDN</abbr> Dokumentation über HTTP-Statuscodes</a>.
59+
60+
## Abkürzung, um die Namen zu erinnern
61+
62+
Schauen wir uns das vorherige Beispiel noch einmal an:
63+
64+
```Python hl_lines="6"
65+
{!../../../docs_src/response_status_code/tutorial001.py!}
66+
```
67+
68+
`201` ist der Statuscode für „Created“ („Erzeugt“).
69+
70+
Aber Sie müssen sich nicht daran erinnern, welcher dieser Codes was bedeutet.
71+
72+
Sie können die Hilfsvariablen von `fastapi.status` verwenden.
73+
74+
```Python hl_lines="1 6"
75+
{!../../../docs_src/response_status_code/tutorial002.py!}
76+
```
77+
78+
Diese sind nur eine Annehmlichkeit und enthalten dieselbe Nummer, aber auf diese Weise können Sie die Autovervollständigung Ihres Editors verwenden, um sie zu finden:
79+
80+
<img src="/img/tutorial/response-status-code/image02.png">
81+
82+
!!! note "Technische Details"
83+
Sie können auch `from starlette import status` verwenden.
84+
85+
**FastAPI** bietet dieselben `starlette.status`-Codes auch via `fastapi.status` an, als Annehmlichkeit für Sie, den Entwickler. Sie kommen aber direkt von Starlette.
86+
87+
## Den Defaultwert ändern
88+
89+
Später sehen Sie, im [Handbuch für fortgeschrittene Benutzer](../advanced/response-change-status-code.md){.internal-link target=_blank}, wie Sie einen anderen Statuscode zurückgeben können, als den Default, den Sie hier deklarieren.

docs/em/docs/advanced/generate-clients.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
⚠ 🧰 <a href="https://openapi-generator.tech/" class="external-link" target="_blank">🗄 🚂</a>.
1212

13-
🚥 👆 🏗 **🕸**, 📶 😌 🎛 <a href="https://github.com/ferdikoomen/openapi-typescript-codegen" class="external-link" target="_blank">🗄-📕-🇦🇪</a>.
13+
🚥 👆 🏗 **🕸**, 📶 😌 🎛 <a href="https://github.com/hey-api/openapi-ts" class="external-link" target="_blank">🗄-📕-🇦🇪</a>.
1414

1515
## 🏗 📕 🕸 👩‍💻
1616

@@ -46,14 +46,14 @@
4646

4747
🔜 👈 👥 ✔️ 📱 ⏮️ 🏷, 👥 💪 🏗 👩‍💻 📟 🕸.
4848

49-
#### `openapi-typescript-codegen`
49+
#### `openapi-ts`
5050

51-
👆 💪 ❎ `openapi-typescript-codegen` 👆 🕸 📟 ⏮️:
51+
👆 💪 ❎ `openapi-ts` 👆 🕸 📟 ⏮️:
5252

5353
<div class="termy">
5454

5555
```console
56-
$ npm install openapi-typescript-codegen --save-dev
56+
$ npm install @hey-api/openapi-ts --save-dev
5757

5858
---> 100%
5959
```
@@ -62,7 +62,7 @@ $ npm install openapi-typescript-codegen --save-dev
6262

6363
#### 🏗 👩‍💻 📟
6464

65-
🏗 👩‍💻 📟 👆 💪 ⚙️ 📋 ⏸ 🈸 `openapi` 👈 🔜 🔜 ❎.
65+
🏗 👩‍💻 📟 👆 💪 ⚙️ 📋 ⏸ 🈸 `openapi-ts` 👈 🔜 🔜 ❎.
6666

6767
↩️ ⚫️ ❎ 🇧🇿 🏗, 👆 🎲 🚫🔜 💪 🤙 👈 📋 🔗, ✋️ 👆 🔜 🚮 ⚫️ 🔛 👆 `package.json` 📁.
6868

@@ -75,12 +75,12 @@ $ npm install openapi-typescript-codegen --save-dev
7575
"description": "",
7676
"main": "index.js",
7777
"scripts": {
78-
"generate-client": "openapi --input http://localhost:8000/openapi.json --output ./src/client --client axios"
78+
"generate-client": "openapi-ts --input http://localhost:8000/openapi.json --output ./src/client --client axios"
7979
},
8080
"author": "",
8181
"license": "",
8282
"devDependencies": {
83-
"openapi-typescript-codegen": "^0.20.1",
83+
"@hey-api/openapi-ts": "^0.27.38",
8484
"typescript": "^4.6.2"
8585
}
8686
}
@@ -94,7 +94,7 @@ $ npm install openapi-typescript-codegen --save-dev
9494
$ npm run generate-client
9595

9696
frontend-app@1.0.0 generate-client /home/user/code/frontend-app
97-
> openapi --input http://localhost:8000/openapi.json --output ./src/client --client axios
97+
> openapi-ts --input http://localhost:8000/openapi.json --output ./src/client --client axios
9898
```
9999

100100
</div>
@@ -235,12 +235,12 @@ FastAPI ⚙️ **😍 🆔** 🔠 *➡ 🛠️*, ⚫️ ⚙️ **🛠️ 🆔**
235235
"description": "",
236236
"main": "index.js",
237237
"scripts": {
238-
"generate-client": "openapi --input ./openapi.json --output ./src/client --client axios"
238+
"generate-client": "openapi-ts --input ./openapi.json --output ./src/client --client axios"
239239
},
240240
"author": "",
241241
"license": "",
242242
"devDependencies": {
243-
"openapi-typescript-codegen": "^0.20.1",
243+
"@hey-api/openapi-ts": "^0.27.38",
244244
"typescript": "^4.6.2"
245245
}
246246
}

0 commit comments

Comments
 (0)