From 67494c2b5eaf27f372812e21850c204e2bc79cc6 Mon Sep 17 00:00:00 2001
From: Aykhan Shahsuvarov <88669260+aykhans@users.noreply.github.com>
Date: Wed, 31 Jan 2024 19:45:57 +0400
Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Add=20Azerbaijani=20translation?=
=?UTF-8?q?=20for=20`docs/az/docs/index.md`=20(#11047)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/az/docs/index.md | 469 ++++++++++++++++++++++++++++++++++++++++++
docs/az/mkdocs.yml | 1 +
docs/en/mkdocs.yml | 2 +
3 files changed, 472 insertions(+)
create mode 100644 docs/az/docs/index.md
create mode 100644 docs/az/mkdocs.yml
diff --git a/docs/az/docs/index.md b/docs/az/docs/index.md
new file mode 100644
index 000000000..a22706512
--- /dev/null
+++ b/docs/az/docs/index.md
@@ -0,0 +1,469 @@
+
+
+
+
+ FastAPI framework, yüksək məshuldarlı, öyrənməsi asan, çevik kodlama, istifadəyə hazırdır
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---
+
+**Sənədlər**: https://fastapi.tiangolo.com
+
+**Qaynaq Kodu**: https://github.com/tiangolo/fastapi
+
+---
+
+FastAPI Python 3.8+ ilə API yaratmaq üçün standart Python tip məsləhətlərinə əsaslanan, müasir, sürətli (yüksək performanslı) framework-dür.
+
+Əsas xüsusiyyətləri bunlardır:
+
+* **Sürətli**: Çox yüksək performans, **NodeJS** və **Go** səviyyəsində (Starlette və Pydantic-ə təşəkkürlər). [Ən sürətli Python frameworklərindən biridir](#performans).
+* **Çevik kodlama**: Funksiyanallıqları inkişaf etdirmək sürətini təxminən 200%-dən 300%-ə qədər artırın. *
+* **Daha az xəta**: İnsan (developer) tərəfindən törədilən səhvlərin təxminən 40% -ni azaldın. *
+* **İntuitiv**: Əla redaktor dəstəyi. Hər yerdə otomatik tamamlama. Xətaları müəyyənləşdirməyə daha az vaxt sərf edəcəksiniz.
+* **Asan**: İstifadəsi və öyrənilməsi asan olması üçün nəzərdə tutulmuşdur. Sənədləri oxumaq üçün daha az vaxt ayıracaqsınız.
+* **Qısa**: Kod təkrarlanmasını minimuma endirin. Hər bir parametr tərifində birdən çox xüsusiyyət ilə və daha az səhvlə qarşılaşacaqsınız.
+* **Güclü**: Avtomatik və interaktiv sənədlərlə birlikdə istifadəyə hazır kod əldə edə bilərsiniz.
+* **Standartlara əsaslanan**: API-lar üçün açıq standartlara əsaslanır (və tam uyğun gəlir): OpenAPI (əvvəlki adı ilə Swagger) və JSON Schema.
+
+* Bu fikirlər daxili development komandasının hazırladıqları məhsulların sınaqlarına əsaslanır.
+
+## Sponsorlar
+
+
+
+{% if sponsors %}
+{% for sponsor in sponsors.gold -%}
+
+{% endfor -%}`
+{%- for sponsor in sponsors.silver -%}
+
+{% endfor %}
+{% endif %}
+
+
+
+Digər sponsorlar
+
+## Rəylər
+
+"_[...] Son günlərdə **FastAPI**-ı çox istifadə edirəm. [...] Əslində onu komandamın bütün **Microsoftda ML sevislərində** istifadə etməyi planlayıram. Onların bəziləri **windows**-un əsas məhsuluna və bəzi **Office** məhsullarına inteqrasiya olunurlar._"
+
+Kabir Khan -
Microsoft (ref)
+
+---
+
+"_**FastAPI** kitabxanasını **Proqnozlar** əldə etmək üçün sorğulana bilən **REST** serverini yaratmaqda istifadə etdik._"
+
+Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala -
Uber (ref)
+
+---
+
+"_**Netflix** **böhran idarəçiliyi** orkestrləşmə framework-nün açıq qaynaqlı buraxılışını elan etməkdən məmnundur: **Dispatch**! [**FastAPI** ilə quruldu]_"
+
+Kevin Glisson, Marc Vilanova, Forest Monsen -
Netflix (ref)
+
+---
+
+"_**FastAPI** üçün həyəcanlıyam. Çox əyləncəlidir!_"
+
+
+
+---
+
+"_Düzünü desəm, sizin qurduğunuz şey həqiqətən möhkəm və peşəkar görünür. Bir çox cəhətdən **Hug**-un olmasını istədiyim kimdir - kiminsə belə bir şey qurduğunu görmək həqiqətən ruhlandırıcıdır._"
+
+
+
+---
+
+"_Əgər REST API-lər yaratmaq üçün **müasir framework** öyrənmək istəyirsinizsə, **FastAPI**-a baxın [...] Sürətli, istifadəsi və öyrənməsi asandır. [...]_"
+
+"_**API** xidmətlərimizi **FastAPI**-a köçürdük [...] Sizin də bəyənəcəyinizi düşünürük._"
+
+
+
+---
+
+"_Python ilə istifadəyə hazır API qurmaq istəyən hər kəsə **FastAPI**-ı tövsiyə edirəm. **Möhtəşəm şəkildə dizayn edilmiş**, **istifadəsi asan** və **yüksək dərəcədə genişlənə bilən**-dir, API əsaslı inkişaf strategiyamızın **əsas komponentinə** çevrilib və Virtual TAC Engineer kimi bir çox avtomatlaşdırma və servisləri idarə edir._"
+
+Deon Pillsbury -
Cisco (ref)
+
+---
+
+## **Typer**, CLI-ların FastAPI-ı
+
+
+
+Əgər siz veb API əvəzinə terminalda istifadə ediləcək CLI proqramı qurursunuzsa, **Typer**-a baxa bilərsiniz.
+
+**Typer** FastAPI-ın kiçik qardaşıdır. Və o, CLI-lərin **FastAPI**-ı olmaq üçün nəzərdə tutulub. ⌨️ 🚀
+
+## Tələblər
+
+Python 3.8+
+
+FastAPI nəhənglərin çiyinlərində dayanır:
+
+* Web tərəfi üçün Starlette.
+* Data tərəfi üçün Pydantic.
+
+## Quraşdırma
+
+
+
+```console
+$ pip install fastapi
+
+---> 100%
+```
+
+
+
+Tətbiqimizi əlçatan etmək üçün bizə Uvicorn və ya Hypercorn kimi ASGI server lazımdır.
+
+
+
+```console
+$ pip install "uvicorn[standard]"
+
+---> 100%
+```
+
+
+
+## Nümunə
+
+### Kodu yaradaq
+
+* `main.py` adlı fayl yaradaq və ona aşağıdakı kodu yerləşdirək:
+
+```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}
+```
+
+
+Və ya async def
...
+
+Əgər kodunuzda `async` və ya `await` vardırsa `async def` istifadə edə bilərik:
+
+```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}
+```
+
+**Qeyd**:
+
+Əgər bu mövzu haqqında məlumatınız yoxdursa `async` və `await` sənədindəki _"Tələsirsən?"_ bölməsinə baxa bilərsiniz.
+
+
+
+### Kodu işə salaq
+
+Serveri aşağıdakı əmr ilə işə salaq:
+
+
+
+```console
+$ uvicorn main:app --reload
+
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+INFO: Started reloader process [28720]
+INFO: Started server process [28722]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+```
+
+
+
+
+uvicorn main:app --reload
əmri haqqında...
+
+`uvicorn main:app` əmri aşağıdakılara instinad edir:
+
+* `main`: `main.py` faylı (yəni Python "modulu").
+* `app`: `main.py` faylında `app = FastAPI()` sətrində yaratdığımız `FastAPI` obyektidir.
+* `--reload`: kod dəyişikliyindən sonra avtomatik olaraq serveri yenidən işə salır. Bu parametrdən yalnız development mərhələsində istifadə etməliyik.
+
+
+
+### İndi yoxlayaq
+
+Bu linki brauzerimizdə açaq http://127.0.0.1:8000/items/5?q=somequery.
+
+Aşağıdakı kimi bir JSON cavabı görəcəksiniz:
+
+```JSON
+{"item_id": 5, "q": "somequery"}
+```
+
+Siz artıq bir API yaratmısınız, hansı ki:
+
+* `/` və `/items/{item_id}` _yollarında_ HTTP sorğularını qəbul edir.
+* Hər iki _yolda_ `GET` əməliyyatlarını (həmçinin HTTP _metodları_ kimi bilinir) aparır.
+* `/items/{item_id}` _yolu_ `item_id` adlı `int` qiyməti almalı olan _yol parametrinə_ sahibdir.
+* `/items/{item_id}` _yolunun_ `q` adlı yol parametri var və bu parametr istəyə bağlı olsa da, `str` qiymətini almalıdır.
+
+### İnteraktiv API Sənədləri
+
+İndi http://127.0.0.1:8000/docs ünvanına daxil olun.
+
+Avtomatik interaktiv API sənədlərini görəcəksiniz (Swagger UI tərəfindən təmin edilir):
+
+
+
+### Alternativ API sənədləri
+
+İndi isə http://127.0.0.1:8000/redoc ünvanına daxil olun.
+
+ReDoc tərəfindən təqdim edilən avtomatik sənədləri görəcəksiniz:
+
+
+
+## Nümunəni Yeniləyək
+
+İndi gəlin `main.py` faylını `PUT` sorğusu ilə birlikdə gövdə qəbul edəcək şəkildə dəyişdirək.
+
+Pydantic sayəsində standart Python tiplərindən istifadə edərək gövdəni müəyyən edək.
+
+```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}
+```
+Server avtomatik olaraq yenidən işə salınmalı idi (çünki biz yuxarıda `uvicorn` əmri ilə `--reload` parametrindən istifadə etmişik).
+
+### İnteraktiv API sənədlərindəki dəyişikliyə baxaq
+
+Yenidən http://127.0.0.1:8000/docs ünvanına daxil olun.
+
+* İnteraktiv API sənədləri yeni gövdə də daxil olmaq ilə avtomatik olaraq yenilənəcək:
+
+
+
+* "Try it out" düyməsini klikləyin, bu, parametrləri doldurmağa və API ilə birbaşa əlaqə saxlamağa imkan verir:
+
+
+
+* Sonra "Execute" düyməsini klikləyin, istifadəçi interfeysi API ilə əlaqə quracaq, parametrləri göndərəcək, nəticələri əldə edəcək və onları ekranda göstərəcək:
+
+
+
+### Alternativ API Sənədlərindəki Dəyişikliyə Baxaq
+
+İndi isə yenidən http://127.0.0.1:8000/redoc ünvanına daxil olun.
+
+* Alternativ sənədlər həm də yeni sorğu parametri və gövdəsini əks etdirəcək:
+
+
+
+### Xülasə
+
+Ümumiləşdirsək, parametrlər, gövdə və s. Biz məlumat növlərini **bir dəfə** funksiya parametrləri kimi təyin edirik.
+
+Bunu standart müasir Python tipləri ilə edirsiniz.
+
+Yeni sintaksis, müəyyən bir kitabxananın metodlarını və ya siniflərini və s. öyrənmək məcburiyyətində deyilsiniz.
+
+Sadəcə standart **Python 3.8+**.
+
+Məsələn, `int` üçün:
+
+```Python
+item_id: int
+```
+
+və ya daha mürəkkəb `Item` modeli üçün:
+
+```Python
+item: Item
+```
+
+...və yalnız parametr tipini təyin etməklə bunları əldə edirsiniz:
+
+* Redaktor dəstəyi ilə:
+ * Avtomatik tamamlama.
+ * Tip yoxlanması.
+* Məlumatların Təsdiqlənməsi:
+ * Məlumat etibarsız olduqda avtomatik olaraq aydın xətalar göstərir.
+ * Hətta çox dərin JSON obyektlərində belə doğrulama aparır.
+* Daxil olan məlumatları çevirmək üçün aşağıdakı məlumat növlərindən istifadə edilir:
+ * JSON.
+ * Yol parametrləri.
+ * Sorğu parametrləri.
+ * Çərəzlər.
+ * Başlıqlaq.
+ * Formalar.
+ * Fayllar.
+* Daxil olan məlumatları çevirmək üçün aşağıdakı məlumat növlərindən istifadə edilir (JSON olaraq):
+ * Python tiplərinin (`str`, `int`, `float`, `bool`, `list`, və s) çevrilməsi.
+ * `datetime` obyektləri.
+ * `UUID` obyektləri.
+ * Verilənlər bazası modelləri.
+ * və daha çoxu...
+* 2 alternativ istifadəçi interfeysi daxil olmaqla avtomatik interaktiv API sənədlərini təmin edir:
+ * Swagger UI.
+ * ReDoc.
+
+---
+
+Gəlin əvvəlki nümunəyə qayıdaq və **FastAPI**-nin nələr edəcəyinə nəzər salaq:
+
+* `GET` və `PUT` sorğuları üçün `item_id`-nin yolda olub-olmadığını yoxlayacaq.
+* `item_id`-nin `GET` və `PUT` sorğuları üçün növünün `int` olduğunu yoxlayacaq.
+ * Əgər `int` deyilsə, səbəbini göstərən bir xəta mesajı göstərəcəkdir.
+* məcburi olmayan `q` parametrinin `GET` (`http://127.0.0.1:8000/items/foo?q=somequery` burdakı kimi) sorğusu içərisində olub olmadığını yoxlayacaq.
+ * `q` parametrini `= None` ilə yaratdığımız üçün, məcburi olmayan parametr olacaq.
+ * Əgər `None` olmasaydı, bu məcburi parametr olardı (`PUT` metodunun gövdəsində olduğu kimi).
+* `PUT` sorğusu üçün, `/items/{item_id}` gövdəsini JSON olaraq oxuyacaq:
+ * `name` adında məcburi bir parametr olub olmadığını və əgər varsa, tipinin `str` olub olmadığını yoxlayacaq.
+ * `price` adında məcburi bir parametr olub olmadığını və əgər varsa, tipinin `float` olub olmadığını yoxlayacaq.
+ * `is_offer` adında məcburi olmayan bir parametr olub olmadığını və əgər varsa, tipinin `float` olub olmadığını yoxlayacaq.
+ * Bütün bunlar ən dərin JSON obyektlərində belə işləyəcək.
+* Məlumatların JSON-a və JSON-un Python obyektinə çevrilməsi avtomatik həyata keçiriləcək.
+* Hər şeyi OpenAPI ilə uyğun olacaq şəkildə avtomatik olaraq sənədləşdirəcək və onları aşağıdakı kimi istifadə edə biləcək:
+ * İnteraktiv sənədləşmə sistemləri.
+ * Bir çox proqramlaşdırma dilləri üçün avtomatlaşdırılmış müştəri kodu yaratma sistemləri.
+* 2 interaktiv sənədləşmə veb interfeysini birbaşa təmin edəcək.
+
+---
+
+Yeni başlamışıq, amma siz artıq işin məntiqini başa düşmüsünüz.
+
+İndi aşağıdakı sətri dəyişdirməyə çalışın:
+
+```Python
+ return {"item_name": item.name, "item_id": item_id}
+```
+
+...bundan:
+
+```Python
+ ... "item_name": item.name ...
+```
+
+...buna:
+
+```Python
+ ... "item_price": item.price ...
+```
+
+...və redaktorun məlumat tiplərini bildiyini və avtomatik tamaladığını görəcəksiniz:
+
+
+
+Daha çox funksiyaya malik daha dolğun nümunə üçün Öyrədici - İstifadəçi Təlimatı səhifəsinə baxa bilərsiniz.
+
+**Spoiler xəbərdarlığı**: Öyrədici - istifadəçi təlimatına bunlar daxildir:
+
+* **Parametrlərin**, **başlıqlar**, çərəzlər, **forma sahələri** və **fayllar** olaraq müəyyən edilməsi.
+* `maximum_length` və ya `regex` kimi **doğrulama məhdudiyyətlərinin** necə təyin ediləcəyi.
+* Çox güclü və istifadəsi asan **Dependency Injection** sistemi.
+* Təhlükəsizlik və autentifikasiya, **JWT tokenləri** ilə **OAuth2** dəstəyi və **HTTP Basic** autentifikasiyası.
+* **çox dərin JSON modellərini** müəyyən etmək üçün daha irəli səviyyə (lakin eyni dərəcədə asan) üsullar (Pydantic sayəsində).
+* Strawberry və digər kitabxanalar ilə **GraphQL** inteqrasiyası.
+* Digər əlavə xüsusiyyətlər (Starlette sayəsində):
+ * **WebSockets**
+ * HTTPX və `pytest` sayəsində çox asan testlər
+ * **CORS**
+ * **Cookie Sessions**
+ * ...və daha çoxu.
+
+## Performans
+
+Müstəqil TechEmpower meyarları göstərir ki, Uvicorn üzərində işləyən **FastAPI** proqramları ən sürətli Python kitabxanalarından biridir, yalnız Starlette və Uvicorn-un özündən yavaşdır, ki FastAPI bunların üzərinə qurulmuş bir framework-dür. (*)
+
+Ətraflı məlumat üçün bu bölməyə nəzər salın Müqayisələr.
+
+## Məcburi Olmayan Tələblər
+
+Pydantic tərəfindən istifadə olunanlar:
+
+* email_validator
- e-poçtun yoxlanılması üçün.
+* pydantic-settings
- parametrlərin idarə edilməsi üçün.
+* pydantic-extra-types
- Pydantic ilə istifadə edilə bilən əlavə tiplər üçün.
+
+Starlette tərəfindən istifadə olunanlar:
+
+* httpx
- Əgər `TestClient` strukturundan istifadə edəcəksinizsə, tələb olunur.
+* jinja2
- Standart şablon konfiqurasiyasından istifadə etmək istəyirsinizsə, tələb olunur.
+* python-multipart
- `request.form()` ilə forma "çevirmə" dəstəyindən istifadə etmək istəyirsinizsə, tələb olunur.
+* itsdangerous
- `SessionMiddleware` dəstəyi üçün tələb olunur.
+* pyyaml
- `SchemaGenerator` dəstəyi üçün tələb olunur (Çox güman ki, FastAPI istifadə edərkən buna ehtiyacınız olmayacaq).
+* ujson
- `UJSONResponse` istifadə etmək istəyirsinizsə, tələb olunur.
+
+Həm FastAPI, həm də Starlette tərəfindən istifadə olunur:
+
+* uvicorn
- Yaratdığımız proqramı servis edəcək veb server kimi fəaliyyət göstərir.
+* orjson
- `ORJSONResponse` istifadə edəcəksinizsə tələb olunur.
+
+Bütün bunları `pip install fastapi[all]` ilə quraşdıra bilərsiniz.
+
+## Lisenziya
+
+Bu layihə MIT lisenziyasının şərtlərinə əsasən lisenziyalaşdırılıb.
diff --git a/docs/az/mkdocs.yml b/docs/az/mkdocs.yml
new file mode 100644
index 000000000..de18856f4
--- /dev/null
+++ b/docs/az/mkdocs.yml
@@ -0,0 +1 @@
+INHERIT: ../en/mkdocs.yml
diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml
index 2b843e026..9e22e3a22 100644
--- a/docs/en/mkdocs.yml
+++ b/docs/en/mkdocs.yml
@@ -267,6 +267,8 @@ extra:
alternate:
- link: /
name: en - English
+ - link: /az/
+ name: az - azərbaycan dili
- link: /bn/
name: bn - বাংলা
- link: /de/