Skip to content

Commit 1562592

Browse files
Kadermiyanyedipre-commit-ci[bot]tiangolo
authored
🌐 Add Turkish translation for docs/tr/docs/tutorial/first_steps.md (#5691)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
1 parent 52a8417 commit 1562592

File tree

2 files changed

+338
-0
lines changed

2 files changed

+338
-0
lines changed
Lines changed: 336 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,336 @@
1+
# İlk Adımlar
2+
3+
En basit FastAPI dosyası şu şekildedir:
4+
5+
```Python
6+
{!../../../docs_src/first_steps/tutorial001.py!}
7+
```
8+
9+
Bunu bir `main.py` dosyasına kopyalayın.
10+
11+
Projeyi çalıştırın:
12+
13+
<div class="termy">
14+
15+
```console
16+
$ uvicorn main:app --reload
17+
18+
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
19+
<span style="color: green;">INFO</span>: Started reloader process [28720]
20+
<span style="color: green;">INFO</span>: Started server process [28722]
21+
<span style="color: green;">INFO</span>: Waiting for application startup.
22+
<span style="color: green;">INFO</span>: Application startup complete.
23+
```
24+
25+
</div>
26+
27+
!!! note
28+
`uvicorn main:app` komutu şunu ifade eder:
29+
30+
* `main`: `main.py` dosyası (the Python "module").
31+
* `app`: `main.py` dosyası içerisinde `app = FastAPI()` satırıyla oluşturulan nesne.
32+
* `--reload`: Kod değişikliği sonrasında sunucunun yeniden başlatılmasını sağlar. Yalnızca geliştirme için kullanın.
33+
34+
Çıktıda şu şekilde bir satır vardır:
35+
36+
```hl_lines="4"
37+
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
38+
```
39+
40+
Bu satır, yerel makinenizde uygulamanızın sunulduğu URL'yi gösterir.
41+
42+
### Kontrol Et
43+
44+
Tarayıcınızda <a href="http://127.0.0.1:8000" class="external-link" target="_blank">http://127.0.0.1:8000</a> adresini açın.
45+
46+
Bir JSON yanıtı göreceksiniz:
47+
48+
```JSON
49+
{"message": "Hello World"}
50+
```
51+
52+
### İnteraktif API dokümantasyonu
53+
54+
<a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> adresine gidin.
55+
56+
Otomatik oluşturulmuş( <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a> tarafından sağlanan) interaktif bir API dokümanı göreceksiniz:
57+
58+
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
59+
60+
### Alternatif API dokümantasyonu
61+
62+
Şimdi, <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> adresine gidin.
63+
64+
Otomatik oluşturulmuş(<a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a> tarafından sağlanan) bir API dokümanı göreceksiniz:
65+
66+
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
67+
68+
### OpenAPI
69+
70+
**FastAPI**, **OpenAPI** standardını kullanarak tüm API'lerinizi açıklayan bir "şema" oluşturur.
71+
72+
#### "Şema"
73+
74+
Bir "şema", bir şeyin tanımı veya açıklamasıdır. Soyut bir açıklamadır, uygulayan kod değildir.
75+
76+
#### API "şemaları"
77+
78+
Bu durumda, <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a>, API şemasını nasıl tanımlayacağınızı belirten şartnamelerdir.
79+
80+
Bu şema tanımı, API yollarınızı, aldıkları olası parametreleri vb. içerir.
81+
82+
#### Data "şema"
83+
84+
"Şema" terimi, JSON içeriği gibi bazı verilerin şeklini de ifade edebilir.
85+
86+
Bu durumda, JSON öznitelikleri ve sahip oldukları veri türleri vb. anlamına gelir.
87+
88+
#### OpenAPI and JSON Şema
89+
90+
OpenAPI, API'niz için bir API şeması tanımlar. Ve bu şema, JSON veri şemaları standardı olan **JSON Şema** kullanılarak API'niz tarafından gönderilen ve alınan verilerin tanımlarını (veya "şemalarını") içerir.
91+
92+
#### `openapi.json` kontrol et
93+
94+
OpenAPI şemasının nasıl göründüğünü merak ediyorsanız, FastAPI otomatik olarak tüm API'nizin açıklamalarını içeren bir JSON (şema) oluşturur.
95+
96+
Doğrudan şu adreste görebilirsiniz: <a href="http://127.0.0.1:8000/openapi.json" class="external-link" target="_blank">http://127.0.0.1:8000/openapi.json</a>.
97+
98+
Aşağıdaki gibi bir şeyle başlayan bir JSON gösterecektir:
99+
100+
```JSON
101+
{
102+
"openapi": "3.0.2",
103+
"info": {
104+
"title": "FastAPI",
105+
"version": "0.1.0"
106+
},
107+
"paths": {
108+
"/items/": {
109+
"get": {
110+
"responses": {
111+
"200": {
112+
"description": "Successful Response",
113+
"content": {
114+
"application/json": {
115+
116+
117+
118+
...
119+
```
120+
121+
#### OpenAPI ne içindir?
122+
123+
OpenAPI şeması, dahili olarak bulunan iki etkileşimli dokümantasyon sistemine güç veren şeydir.
124+
125+
Ve tamamen OpenAPI'ye dayalı düzinelerce alternatif vardır. **FastAPI** ile oluşturulmuş uygulamanıza bu alternatiflerden herhangi birini kolayca ekleyebilirsiniz.
126+
127+
API'nizle iletişim kuran istemciler için otomatik olarak kod oluşturmak için de kullanabilirsiniz. Örneğin, frontend, mobil veya IoT uygulamaları.
128+
129+
## Adım adım özet
130+
131+
### Adım 1: `FastAPI`yi içe aktarın
132+
133+
```Python hl_lines="1"
134+
{!../../../docs_src/first_steps/tutorial001.py!}
135+
```
136+
137+
`FastAPI`, API'niz için tüm fonksiyonları sağlayan bir Python sınıfıdır.
138+
139+
!!! note "Teknik Detaylar"
140+
`FastAPI` doğrudan `Starlette` kalıtım alan bir sınıftır.
141+
142+
Tüm <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> fonksiyonlarını `FastAPI` ile de kullanabilirsiniz.
143+
144+
### Adım 2: Bir `FastAPI` örneği oluşturun
145+
146+
```Python hl_lines="3"
147+
{!../../../docs_src/first_steps/tutorial001.py!}
148+
```
149+
150+
Burada `app` değişkeni `FastAPI` sınıfının bir örneği olacaktır.
151+
152+
Bu tüm API'yi oluşturmak için ana etkileşim noktası olacaktır.
153+
154+
`uvicorn` komutunda atıfta bulunulan `app` ile aynıdır.
155+
156+
<div class="termy">
157+
158+
```console
159+
$ uvicorn main:app --reload
160+
161+
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
162+
```
163+
164+
</div>
165+
166+
Uygulamanızı aşağıdaki gibi oluşturursanız:
167+
168+
```Python hl_lines="3"
169+
{!../../../docs_src/first_steps/tutorial002.py!}
170+
```
171+
172+
Ve bunu `main.py` dosyasına koyduktan sonra `uvicorn` komutunu şu şekilde çağırabilirsiniz:
173+
174+
<div class="termy">
175+
176+
```console
177+
$ uvicorn main:my_awesome_api --reload
178+
179+
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
180+
```
181+
182+
</div>
183+
184+
### Adım 3: *Path işlemleri* oluşturmak
185+
186+
#### Path
187+
188+
Burada "Path" URL'de ilk "\" ile başlayan son bölümü ifade eder.
189+
190+
Yani, şu şekilde bir URL'de:
191+
192+
```
193+
https://example.com/items/foo
194+
```
195+
196+
... path şöyle olabilir:
197+
198+
```
199+
/items/foo
200+
```
201+
202+
!!! info
203+
Genellikle bir "path", "endpoint" veya "route" olarak adlandırılabilir.
204+
205+
Bir API oluştururken, "path", "resource" ile "concern" ayırmanın ana yoludur.
206+
207+
#### İşlemler
208+
209+
Burada "işlem" HTTP methodlarından birini ifade eder.
210+
211+
Onlardan biri:
212+
213+
* `POST`
214+
* `GET`
215+
* `PUT`
216+
* `DELETE`
217+
218+
... ve daha egzotik olanları:
219+
220+
* `OPTIONS`
221+
* `HEAD`
222+
* `PATCH`
223+
* `TRACE`
224+
225+
HTTP protokolünde, bu "methodlardan" birini (veya daha fazlasını) kullanarak her path ile iletişim kurabilirsiniz.
226+
227+
---
228+
229+
API'lerinizi oluştururkan, belirli bir işlemi gerçekleştirirken belirli HTTP methodlarını kullanırsınız.
230+
231+
Normalde kullanılan:
232+
233+
* `POST`: veri oluşturmak.
234+
* `GET`: veri okumak.
235+
* `PUT`: veriyi güncellemek.
236+
* `DELETE`: veriyi silmek.
237+
238+
Bu nedenle, OpenAPI'de HTTP methodlarından her birine "işlem" denir.
239+
240+
Bizde onlara "**işlemler**" diyeceğiz.
241+
242+
#### Bir *Path işlem decoratorleri* tanımlanmak
243+
244+
```Python hl_lines="6"
245+
{!../../../docs_src/first_steps/tutorial001.py!}
246+
```
247+
248+
`@app.get("/")` **FastAPI'ye** aşağıdaki fonksiyonun adresine giden istekleri işlemekten sorumlu olduğunu söyler:
249+
250+
* path `/`
251+
* <abbr title="an HTTP GET method"><code>get</code> işlemi</abbr> kullanılarak
252+
253+
254+
!!! info "`@decorator` Bilgisi"
255+
Python `@something` şeklinde ifadeleri "decorator" olarak adlandırır.
256+
257+
Decoratoru bir fonksiyonun üzerine koyarsınız. Dekoratif bir şapka gibi (Sanırım terim buradan gelmektedir).
258+
259+
Bir "decorator" fonksiyonu alır ve bazı işlemler gerçekleştir.
260+
261+
Bizim durumumzda decarator **FastAPI'ye** fonksiyonun bir `get` işlemi ile `/` pathine geldiğini söyler.
262+
263+
Bu **path işlem decoratordür**
264+
265+
Ayrıca diğer işlemleri de kullanabilirsiniz:
266+
267+
* `@app.post()`
268+
* `@app.put()`
269+
* `@app.delete()`
270+
271+
Ve daha egzotik olanları:
272+
273+
* `@app.options()`
274+
* `@app.head()`
275+
* `@app.patch()`
276+
* `@app.trace()`
277+
278+
!!! tip
279+
Her işlemi (HTTP method) istediğiniz gibi kullanmakta özgürsünüz.
280+
281+
**FastAPI** herhangi bir özel anlamı zorlamaz.
282+
283+
Buradaki bilgiler bir gereklilik değil, bir kılavuz olarak sunulmaktadır.
284+
285+
Örneğin, GraphQL kullanırkan normalde tüm işlemleri yalnızca `POST` işlemini kullanarak gerçekleştirirsiniz.
286+
287+
### Adım 4: **path işlem fonksiyonunu** tanımlayın
288+
289+
Aşağıdakiler bizim **path işlem fonksiyonlarımızdır**:
290+
291+
* **path**: `/`
292+
* **işlem**: `get`
293+
* **function**: "decorator"ün altındaki fonksiyondur (`@app.get("/")` altında).
294+
295+
```Python hl_lines="7"
296+
{!../../../docs_src/first_steps/tutorial001.py!}
297+
```
298+
299+
Bu bir Python fonksiyonudur.
300+
301+
Bir `GET` işlemi kullanarak "`/`" URL'sine bir istek geldiğinde **FastAPI** tarafından çağrılır.
302+
303+
Bu durumda bir `async` fonksiyonudur.
304+
305+
---
306+
307+
Bunu `async def` yerine normal bir fonksiyon olarakta tanımlayabilirsiniz.
308+
309+
```Python hl_lines="7"
310+
{!../../../docs_src/first_steps/tutorial003.py!}
311+
```
312+
313+
!!! note
314+
315+
Eğer farkı bilmiyorsanız, [Async: *"Acelesi var?"*](../async.md#in-a-hurry){.internal-link target=_blank} kontrol edebilirsiniz.
316+
317+
### Adım 5: İçeriği geri döndürün
318+
319+
320+
```Python hl_lines="8"
321+
{!../../../docs_src/first_steps/tutorial001.py!}
322+
```
323+
324+
Bir `dict`, `list` döndürebilir veya `str`, `int` gibi tekil değerler döndürebilirsiniz.
325+
326+
Ayrıca, Pydantic modellerini de döndürebilirsiniz. (Bununla ilgili daha sonra ayrıntılı bilgi göreceksiniz.)
327+
328+
Otomatik olarak JSON'a dönüştürülecek(ORM'ler vb. dahil) başka birçok nesne ve model vardır. En beğendiklerinizi kullanmayı deneyin, yüksek ihtimalle destekleniyordur.
329+
330+
## Özet
331+
332+
* `FastAPI`'yi içe aktarın.
333+
* Bir `app` örneği oluşturun.
334+
* **path işlem decorator** yazın. (`@app.get("/")` gibi)
335+
* **path işlem fonksiyonu** yazın. (`def root(): ...` gibi)
336+
* Development sunucunuzu çalıştırın. (`uvicorn main:app --reload` gibi)

docs/tr/mkdocs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ nav:
6161
- features.md
6262
- fastapi-people.md
6363
- python-types.md
64+
- Tutorial - User Guide:
65+
- tutorial/first-steps.md
6466
markdown_extensions:
6567
- toc:
6668
permalink: true

0 commit comments

Comments
 (0)