From 49aa8bf672580679e80eaf7b45680946f1086b0a Mon Sep 17 00:00:00 2001 From: ckeramas Date: Fri, 21 Mar 2025 09:08:28 +0100 Subject: [PATCH] Add Greek translation for docs/el/docs/index.md --- docs/el/docs/index.md | 497 ++++++++++++++++++++++++++++++++++++++++++ docs/el/mkdocs.yml | 1 + docs/en/mkdocs.yml | 2 + 3 files changed, 500 insertions(+) create mode 100644 docs/el/docs/index.md create mode 100644 docs/el/mkdocs.yml diff --git a/docs/el/docs/index.md b/docs/el/docs/index.md new file mode 100644 index 000000000..63cc0cc6e --- /dev/null +++ b/docs/el/docs/index.md @@ -0,0 +1,497 @@ +# FastAPI + + + +

+ FastAPI +

+

+ FastAPI framework, υψηλή απόδοση, εύκολο στην εκμάθηση, έτοιμο για χρήση στην παραγωγή +

+

+ + Test + + + Coverage + + + Package version + + + Supported Python versions + +

+ +--- + +**Tεκμηρίωση κώδικα**: https://fastapi.tiangolo.com + +**Πηγαίος κώδικας**: https://github.com/fastapi/fastapi + +--- + +FastAPI, είναι ένα σύγχρονο, γρήγορο (υψηλής απόδοσης) web framework για τη δημιουργία API (Advanced Programming Interface | Προηγμένη διεπαφή προγραμματισμού) με Python που βασίζεται σε τυπικές υποδείξεις τύπου Python. + +Τα βασικά χαρακτηριστικά είναι: + +* **Yψηλή απόδοση**: Στο ίδιο επίπεδο με **NodeJS** και **Go** (χάρη στo Starlette και το Pydantic). [Ένα από τα πιο γρήγορα διαθέσιμα Python web framework](#performance). +* **Γρήγορη κωδικοποίηση**: Αυξάνει την ταχύτητα εγγραφής κώδικα κατά περίπου 200% έως 300%. * +* **Λιγότερα σφάλματα**: Μειώστε περίπου το 40% των σφαλμάτων που προκαλούνται από ανθρώπους (προγραμματιστές). * +* **Διαισθητικό**: Yποστήριξη για βοηθητικά προγράμματα συμπλήρωσης κώδικα. Λιγότερος χρόνος αποσφαλμάτωσης. +* **Εύκολο**: Σχεδιασμένο για να είναι εύκολο στη χρήση και στην εκμάθηση. Λιγότερος χρόνος ανάγνωσης εγγράφων. +* **Σύντομο**: Ελαχιστοποιήστε την αντιγραφή κώδικα. Πολλαπλές δυνατότητες από κάθε δήλωση παραμέτρου. +* **Εύρωστο**: Λάβετε κώδικα έτοιμο για παραγωγή. Με αυτόματη διαδραστική τεκμηρίωση. +* **Βασισμένο σε πρότυπα**: Με βάση (και πλήρως συμβατό με) τα ανοιχτά πρότυπα για API: OpenAPI (παλαιότερα γνωστό ως Swagger) και JSON Schema. + +* εκτίμηση που βασίζεται σε δοκιμές σε μια εσωτερική ομάδα ανάπτυξης, κατά την κατασκευή εφαρμογών παραγωγής. + +## Χορηγοί + + + +{% if sponsors %} +{% for sponsor in sponsors.gold -%} + +{% endfor -%} +{%- for sponsor in sponsors.silver -%} + +{% endfor %} +{% endif %} + + + +Άλλοι χορηγοί + +## Απόψεις + +"_[...] Χρησιμοποιώ το **FastAPI** πολύ συχνά [...] Στην πραγματικότητα σκοπεύω να το χρησιμοποιήσω για όλες τις υπηρεσίες της ομάδας μου **ML services at Microsoft**. Ορισμένα από αυτά ενσωματώνονται στο βασικό προϊόν **Windows** και ορισμένα προϊόντα **Γραφείου**._" + +
Kabir Khan - Microsoft (ref)
+ +--- + +"_Υιοθετήσαμε τη βιβλιοθήκη **FastAPI** για να δημιουργήσουμε έναν διακομιστή **REST** που μπορεί να ερωτηθεί για τη λήψη **προβλέψεων**. [για το Ludwig]_" + +
Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - Uber (ref)
+ +--- + +"_Το **Netflix** είναι στην ευχάριστη θέση να ανακοινώσει την κυκλοφορία ανοιχτού κώδικα του πλαισίου ενορχήστρωσης **διαχείριση κρίσεων**: **Dispatch**! [κατασκευάστηκε με το **FastAPI**]_" + +
Kevin Glisson, Marc Vilanova, Forest Monsen - Netflix (ref)
+ +--- + +"_Είναι απόλαυση να δημιουργείς εφαρμογές ιστού με το **FastAPI**!_" + +
Brian Okken - Python Bytes podcast host (ref)
+ +--- + +"_Ειλικρινά, αυτό που έχετε φτιάξει φαίνεται εξαιρετικά συμπαγές και γυαλισμένο. Από πολλές απόψεις, είναι αυτό που ήθελα - είναι πραγματικά εμπνευσμένο να βλέπεις κάποιον να το κατασκευάζει._" + +
Timothy Crosley - Hug creator (ref)
+ +--- + +"_Αν θέλετε να μάθετε ένα **σύγχρονο framework** για τη δημιουργία REST API, ρίξτε μια ματιά στο **FastAPI** [...] Είναι γρήγορο, εύκολο στη χρήση και εύκολο στην εκμάθηση [...]_" + +"_Έχουμε αλλάξει στο **FastAPI** για τα **API** [...] Νομίζω ότι θα σου αρέσει [...]_" + +
Ines Montani - Matthew Honnibal - Explosion AI founders - spaCy creators (ref) - (ref)
+ +--- + +"_Αν κάποιος θέλει να δημιουργήσει ένα Python API παραγωγής, θα συνιστούσα ανεπιφύλακτα το **FastAPI**. Είναι **όμορφα σχεδιασμένο**, **απλό στη χρήση** και **πολύ επεκτάσιμο**, έχει γίνει **βασικό συστατικό** στην πρώτη στρατηγική ανάπτυξης του API και οδηγεί πολλούς αυτοματισμούς και υπηρεσίες, όπως το Virtual TAC Engineer._" + +
Deon Pillsbury - Cisco (ref)
+ +--- + +## **Typer**, το FastAPI των CLI + + + +Εάν δημιουργείτε μια εφαρμογή CLI που θα χρησιμοποιείται στο τερματικό αντί για ένα web API, ρίξτε μια ματιά **Typer**. + +Ο **Typer** είναι το μικρό αδερφάκι του FastAPI. Και προορίζεται να είναι το **FastAPI των CLI**. ⌨️ 🚀 + +## Απαιτήσεις + +Το FastAPI στέκεται στους ώμους γιγάντων: + +* Starlette για τα τμήματα Ιστού. +* Pydantic για τα μέρη δεδομένων. + +## Εγκατάσταση + +Δημιουργήστε και ενεργοποιήστε ένα εικονικό περιβάλλον και στη συνέχεια εγκαταστήστε το FastAPI: + +
+ +```console +$ pip install "fastapi[standard]" + +---> 100% +``` + +
+ +**Σημείωση**: Βεβαιωθείτε ότι έχετε βάλει το `"fastapi[standard]"` σε εισαγωγικά για να διασφαλίσετε ότι λειτουργεί σε όλα τα τερματικά. +## Παράδειγμα + +### Δημιουργήστε το + +* Δημιουργήστε ένα αρχείο `main.py` με: + +```Python +from typing import Union + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Union[str, None] = None): + return {"item_id": item_id, "q": q} +``` + +
+Ή χρησιμοποιήστε async def... + +Αν ο κώδικάς σας χρησιμοποιεί `async` / `await`, χρησιμοποιήστε `async def`: + +```Python hl_lines="9 14" +from typing import Union + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +async def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +async def read_item(item_id: int, q: Union[str, None] = None): + return {"item_id": item_id, "q": q} +``` + +**Σημείωση**: + +Αν δεν γνωρίζετε, ελέγξτε την ενότητα _"Βιάζεστε?"_ σχετικά με `async` και `await` στις τεκμηριώσεις. + +
+ +### Εκτελέστε το + +Εκτελέστε τον διακομιστή με: + +
+ +```console +$ fastapi dev main.py + + ╭────────── FastAPI CLI - Development mode ───────────╮ + │ │ + │ Serving at: http://127.0.0.1:8000 │ + │ │ + │ API docs: http://127.0.0.1:8000/docs │ + │ │ + │ Running in development mode, for production use: │ + │ │ + │ fastapi run │ + │ │ + ╰─────────────────────────────────────────────────────╯ + +INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp'] +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +INFO: Started reloader process [2248755] using WatchFiles +INFO: Started server process [2248757] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +
+ +
+Σχετικά με την εντολή fastapi dev main.py... + +Η εντολή `fastapi dev` διαβάζει το αρχείο σας `main.py`, ανιχνεύει την εφαρμογή **FastAPI** μέσα σε αυτό και εκκινεί έναν διακομιστή χρησιμοποιώντας το Uvicorn. + +Από προεπιλογή, το `fastapi dev` θα ξεκινήσει με ενεργοποιημένη την αυτόματη επαναφόρτωση για τοπική ανάπτυξη. + +Μπορείτε να διαβάσετε περισσότερα σχετικά με αυτό στις τεκμηριώσεις του CLI του FastAPI. + +
+ +### Ελέγξτε το + +Ανοίξτε τον περιηγητή σας στη διεύθυνση http://127.0.0.1:8000/items/5?q=somequery. + +Θα δείτε την απόκριση JSON ως εξής: + +```JSON +{"item_id": 5, "q": "somequery"} +``` + +Έχετε ήδη δημιουργήσει ένα API που: + +* Δέχεται αιτήματα HTTP στις _διαδρομές_ `/` και `/items/{item_id}`. +* Και οι δύο _διαδρομές_ χρησιμοποιούν λειτουργίες `GET` (γνωστές και ως HTTP _μέθοδοι_). +* Η _διαδρομή_ `/items/{item_id}` έχει μια _παράμετρο διαδρομής_ `item_id` που πρέπει να είναι `int`. +* Η _διαδρομή_ `/items/{item_id}` διαθέτει προαιρετική _παράμετρο ερωτήματος_ `q` που είναι `str`. + +### Διαδραστική τεκμηρίωση API + +Τώρα μεταβείτε στη διεύθυνση http://127.0.0.1:8000/docs. + +Θα δείτε την αυτόματη διαδραστική τεκμηρίωση API (παρέχεται από το Swagger UI): + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) + +### Εναλλακτική τεκμηρίωση API + +Και τώρα, μεταβείτε στη διεύθυνση http://127.0.0.1:8000/redoc. + +Θα δείτε την εναλλακτική αυτόματη τεκμηρίωση (παρέχεται από το ReDoc): + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) + +## Παράδειγμα αναβάθμισης + +Τώρα τροποποιήστε το αρχείο `main.py` ώστε να δέχεται ένα σώμα από ένα αίτημα `PUT`. + +Ορίστε το σώμα χρησιμοποιώντας τυπικούς τύπους Python, χάρη στο Pydantic. + +```Python hl_lines="4 9-12 25-27" +from typing import Union + +from fastapi import FastAPI +from pydantic import BaseModel + +app = FastAPI() + + +class Item(BaseModel): + name: str + price: float + is_offer: Union[bool, None] = None + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Union[str, None] = None): + return {"item_id": item_id, "q": q} + + +@app.put("/items/{item_id}") +def update_item(item_id: int, item: Item): + return {"item_name": item.name, "item_id": item_id} +``` + +Ο διακομιστής `fastapi dev` θα πρέπει να επανεκκινηθεί αυτόματα. + +### Αναβάθμιση διαδραστικής τεκμηρίωσης API + +Τώρα μεταβείτε στη διεύθυνση http://127.0.0.1:8000/docs. + +* Η διαδραστική τεκμηρίωση API θα ενημερωθεί αυτόματα, συμπεριλαμβάνοντας το νέο σώμα: + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) + +* Κάντε κλικ στο κουμπί "Try it out", το οποίο σας επιτρέπει να συμπληρώσετε τις παραμέτρους και να αλληλεπιδράσετε απευθείας με το API: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) + +* Στη συνέχεια, κάντε κλικ στο κουμπί "Execute", η διεπαφή χρήστη θα επικοινωνήσει με το API σας, θα στείλει τις παραμέτρους, θα λάβει τα αποτελέσματα και θα τα εμφανίσει στην οθόνη: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) + +### Αναβάθμιση εναλλακτικής τεκμηρίωσης API + +Και τώρα, μεταβείτε στη διεύθυνση http://127.0.0.1:8000/redoc. + +* Η εναλλακτική τεκμηρίωση θα αντικατοπτρίζει επίσης τη νέα παράμετρο ερωτήματος και το σώμα: + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) + +### Ανακεφαλαίωση + +Συνοψίζοντας, δηλώνετε **μία φορά** τους τύπους παραμέτρων, σώματος κ.λπ. ως παραμέτρους συναρτήσεων. + +Και αυτό το κάνετε χρησιμοποιώντας τους τυπικούς, σύγχρονους τύπους της Python. + +Δεν χρειάζεται να μάθετε νέα σύνταξη, μεθόδους ή κλάσεις μιας συγκεκριμένης βιβλιοθήκης, κ.λπ. + +Απλά την τυπική **Python**. + +Για παράδειγμα, για έναν `int`: + +```Python +item_id: int +``` + +ή για ένα πιο σύνθετο μοντέλο `Item`: + +```Python +item: Item +``` + +...και με αυτήν τη μοναδική δήλωση έχετε: + +* Υποστήριξη από τον συντάκτη, συμπεριλαμβανομένων: + * Συμπλήρωσης. + * Ελέγχων τύπου. +* Επικύρωση δεδομένων: + * Αυτόματα και σαφή σφάλματα όταν τα δεδομένα είναι μη έγκυρα. + * Επικύρωση ακόμη και για βαθιά φωλιασμένα αντικείμενα JSON. +* Μετατροπή δεδομένων εισόδου: από το δίκτυο σε δεδομένα και τύπους Python. Ανάγνωση από: + * JSON. + * Path parameters (Παραμέτρους διαδρομής). + * Query parameters (Παραμέτρους ερωτήματος). + * Cookies. + * Headers. + * Forms (Φόρμες). + * Files (Αρχεία). +* Μετατροπή δεδομένων εξόδου: μετατροπή από δεδομένα και τύπους Python σε δεδομένα δικτύου (ως JSON): + * Μετατροπή τύπων Python (`str`, `int`, `float`, `bool`, `list`, κ.λπ.). + * Αντικείμενα `datetime`. + * Αντικείμενα `UUID`. + * Μοντέλα βάσης δεδομένων. + * ...και πολλά περισσότερα. +* Αυτόματη διαδραστική τεκμηρίωση API, συμπεριλαμβανομένων 2 εναλλακτικών διεπαφών χρήστη: + * Swagger UI. + * ReDoc. + +--- + +Επιστρέφοντας στο προηγούμενο παράδειγμα κώδικα, το **FastAPI** θα: + +* Επικυρώνει ότι υπάρχει ένα `item_id` στη διαδρομή για αιτήματα `GET` και `PUT`. +* Επικυρώνει ότι το `item_id` είναι τύπου `int` για αιτήματα `GET` και `PUT`. + * Εάν δεν είναι, ο πελάτης θα βλέπει ένα χρήσιμο, σαφές σφάλμα. +* Ελέγχει αν υπάρχει μια προαιρετική παράμετρος ερωτήματος με όνομα `q` (όπως στο `http://127.0.0.1:8000/items/foo?q=somequery`) για αιτήματα `GET`. + * Δεδομένου ότι η παράμετρος `q` έχει δηλωθεί με `= None`, είναι προαιρετική. + * Χωρίς το `None`, θα ήταν υποχρεωτική (όπως είναι το σώμα στην περίπτωση του `PUT`). +* Για αιτήματα `PUT` στη διαδρομή `/items/{item_id}`, διαβάζει το σώμα ως JSON: + * Ελέγχει ότι έχει ένα υποχρεωτικό χαρακτηριστικό `name` που θα πρέπει να είναι `str`. + * Ελέγχει ότι έχει ένα υποχρεωτικό χαρακτηριστικό `price` που πρέπει να είναι `float`. + * Ελέγχει ότι έχει ένα προαιρετικό χαρακτηριστικό `is_offer`, το οποίο θα πρέπει να είναι `bool` (αν υπάρχει). + * Όλα αυτά ισχύουν επίσης για βαθιά φωλιασμένα αντικείμενα JSON. +* Μετατρέπει από και προς JSON αυτόματα. +* Τεκμηριώνει τα πάντα με το OpenAPI, το οποίο μπορεί να χρησιμοποιηθεί από: + * Διαδραστικά συστήματα τεκμηρίωσης. + * Συστήματα αυτόματης δημιουργίας κώδικα πελάτη, για πολλές γλώσσες. +* Παρέχει 2 διαδραστικές διεπαφές ιστού για τεκμηρίωση απευθείας. + +--- + +Μόλις αγγίξαμε την επιφάνεια, αλλά ήδη καταλαβαίνετε την ιδέα για το πώς λειτουργούν όλα. + +Δοκιμάστε να αλλάξετε τη γραμμή με: + +```Python + return {"item_name": item.name, "item_id": item_id} +``` + +...από: + +```Python + ... "item_name": item.name ... +``` + +...προς: + +```Python + ... "item_price": item.price ... +``` + +...και δείτε πώς ο συντάκτης σας θα ολοκληρώνει αυτόματα τα χαρακτηριστικά και θα γνωρίζει τους τύπους τους: + +![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) + +Για ένα πιο ολοκληρωμένο παράδειγμα που περιλαμβάνει περισσότερες δυνατότητες, δείτε τον Οδηγό χρήσης. + +**Προσοχή**: ο οδηγός χρήσης περιλαμβάνει: + + +* Δήλωση **παραμέτρων** από διαφορετικά σημεία όπως: **headers**, **cookies**, **πεδία φόρμας** και **αρχεία**. +* Πώς να ορίσετε **περιορισμούς επικύρωσης**, όπως `maximum_length` ή `regex`. +* Ένα πολύ ισχυρό και εύκολο στη χρήση σύστημα **Εισαγωγής Εξαρτήσεων**. +* Ασφάλεια και αυθεντικοποίηση, συμπεριλαμβανομένης της υποστήριξης για **OAuth2** με **JWT tokens** και **HTTP Basic** αυθεντικοποίηση. +* Πιο προχωρημένες (αλλά εξίσου εύκολες) τεχνικές για τη δήλωση **βαθιά φωλιασμένων JSON μοντέλων** (χάρη στο Pydantic). +* Ενσωμάτωση **GraphQL** με το Strawberry και άλλες βιβλιοθήκες. +* Πολλές επιπλέον δυνατότητες (χάρη στο Starlette) όπως: + * **WebSockets** + * εξαιρετικά εύκολα τεστ βασισμένα σε HTTPX και `pytest` + * **CORS** + * **Cookie Sessions** + * ...και πολλά άλλα. + +## Απόδοση + +Ανεξάρτητα benchmarks από το TechEmpower δείχνουν ότι οι εφαρμογές **FastAPI** που τρέχουν με Uvicorn είναι από τα ταχύτερα διαθέσιμα Python frameworks, μόνο κάτω από τα ίδια τα Starlette και Uvicorn (που χρησιμοποιούνται εσωτερικά από το FastAPI). (*) + +Για να κατανοήσετε περισσότερα, δείτε την ενότητα Benchmarks. + +## Εξαρτήσεις + +Το FastAPI εξαρτάται από τα Pydantic και Starlette. + +### `standard` Εξαρτήσεις + +Όταν εγκαθιστάτε το FastAPI με την εντολή `pip install "fastapi[standard]"` περιλαμβάνει την ομάδα `standard` προαιρετικών εξαρτήσεων: + +Χρησιμοποιούνται από το Pydantic: + +* email-validator - για επικύρωση email. + +Χρησιμοποιούνται από το Starlette: + +* httpx - Απαραίτητο αν θέλετε να χρησιμοποιήσετε το `TestClient`. +* jinja2 - Απαραίτητο αν θέλετε να χρησιμοποιήσετε την προεπιλεγμένη ρύθμιση για templates. +* python-multipart - Απαραίτητο αν θέλετε να υποστηρίξετε "ανάλυση" φορμών με το `request.form()`. + +Χρησιμοποιούνται από FastAPI / Starlette: + +* uvicorn - για τον server που φορτώνει και εξυπηρετεί την εφαρμογή σας. Αυτό περιλαμβάνει το `uvicorn[standard]`, το οποίο περιέχει ορισμένες εξαρτήσεις (π.χ. `uvloop`) που απαιτούνται για υψηλή απόδοση εξυπηρέτησης. +* `fastapi-cli` - για την παροχή της εντολής `fastapi`. + +### Χωρίς τις `standard` Εξαρτήσεις + +Αν δεν θέλετε να συμπεριλάβετε τις προαιρετικές εξαρτήσεις `standard`, μπορείτε να εγκαταστήσετε με `pip install fastapi` αντί για `pip install "fastapi[standard]"`. + +### Πρόσθετες Προαιρετικές Εξαρτήσεις + +Υπάρχουν ορισμένες πρόσθετες εξαρτήσεις που μπορεί να θέλετε να εγκαταστήσετε. + +Πρόσθετες προαιρετικές εξαρτήσεις για Pydantic: + +* pydantic-settings - για τη διαχείριση ρυθμίσεων. +* pydantic-extra-types - για πρόσθετους τύπους που μπορούν να χρησιμοποιηθούν με το Pydantic. + +Πρόσθετες προαιρετικές εξαρτήσεις για το FastAPI: + +* orjson - Απαραίτητο αν θέλετε να χρησιμοποιήσετε το `ORJSONResponse`. +* ujson - Απαραίτητο αν θέλετε να χρησιμοποιήσετε το `UJSONResponse`. + +## Άδεια Χρήσης + +Αυτό το έργο διανέμεται υπό τους όρους της άδειας MIT. + diff --git a/docs/el/mkdocs.yml b/docs/el/mkdocs.yml new file mode 100644 index 000000000..de18856f4 --- /dev/null +++ b/docs/el/mkdocs.yml @@ -0,0 +1 @@ +INHERIT: ../en/mkdocs.yml diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml index e9a639d0b..27b90d85a 100644 --- a/docs/en/mkdocs.yml +++ b/docs/en/mkdocs.yml @@ -348,6 +348,8 @@ extra: name: bn - বাংলা - link: /de/ name: de - Deutsch + - link: /el/ + name: el - Ελληνικά - link: /es/ name: es - español - link: /fa/