From 974284be907a30ee2e9b1ce9c121c6e32fb2400e Mon Sep 17 00:00:00 2001 From: Gerry Sabar Date: Fri, 13 Dec 2024 04:46:36 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Add=20Indonesian=20translation?= =?UTF-8?q?=20for=20`docs/id/docs/tutorial/first-steps.md`=20(#13042)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/id/docs/tutorial/first-steps.md | 332 +++++++++++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 docs/id/docs/tutorial/first-steps.md diff --git a/docs/id/docs/tutorial/first-steps.md b/docs/id/docs/tutorial/first-steps.md new file mode 100644 index 000000000..9b461507d --- /dev/null +++ b/docs/id/docs/tutorial/first-steps.md @@ -0,0 +1,332 @@ +# Langkah Pertama + +File FastAPI yang paling sederhana bisa seperti berikut: + +{* ../../docs_src/first_steps/tutorial001.py *} + +Salin file tersebut ke `main.py`. + +Jalankan di server: + +
+ +```console +$ fastapi dev main.py +INFO Using path main.py +INFO Resolved absolute path /home/user/code/awesomeapp/main.py +INFO Searching for package file structure from directories with __init__.py files +INFO Importing from /home/user/code/awesomeapp + + ╭─ Python module file ─╮ + │ │ + │ 🐍 main.py │ + │ │ + ╰──────────────────────╯ + +INFO Importing module main +INFO Found importable FastAPI app + + ╭─ Importable FastAPI app ─╮ + │ │ + │ from main import app │ + │ │ + ╰──────────────────────────╯ + +INFO Using import string main:app + + ╭────────── 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 [2265862] using WatchFiles +INFO: Started server process [2265873] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +
+ +Di output, terdapat sebaris pesan: + +```hl_lines="4" +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +``` + +Baris tersebut menunjukan URL dimana app aktif di komputer anda. + + +### Mencoba aplikasi + +Buka browser di http://127.0.0.1:8000. + +Anda akan melihat response JSON sebagai berikut: + +```JSON +{"message": "Hello World"} +``` + +### Dokumen API interaktif + +Sekarang kunjungi http://127.0.0.1:8000/docs. + +Anda akan melihat dokumentasi API interaktif otomatis (dibuat oleh Swagger UI): + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) + +### Dokumen API alternatif + +Dan sekarang, kunjungi http://127.0.0.1:8000/redoc. + +Anda akan melihat dokumentasi alternatif otomatis (dibuat oleh ReDoc): + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) + +### OpenAPI + +**FastAPI** membuat sebuah "schema" dimana semua API anda menggunakan standar **OpenAPI** untuk mendefinisikan API. + +#### "Schema" + +"schema" adalah suatu definisi atau deskripsi dari sesuatu. Bukan kode yang mengimplementasi definisi tersebut. Ini hanyalah sebuah deskripsi abstrak. + +#### "schema" API + +Dalam hal ini, OpenAPI adalah spesifikasi yang menunjukan bagaimana untuk mendefinisikan sebuah skema di API anda. + +Definisi skema ini termasuk jalur API anda, parameter yang bisa diterima, dll. + +#### "schema" Data + +Istilah "schema" bisa juga merujuk ke struktur data, seperti konten JSON. + +Dalam kondisi ini, ini berarti attribut JSON dan tipe data yang dimiliki, dll. + +#### Schema OpenAPI and JSON + +"schema" OpenAPI mendefinisikan skema API dari API yang anda buat. Skema tersebut termasuk definisi (atau "schema") dari data yang dikirim atau diterima oleh API dari **JSON Schema**, skema data standar JSON. + +#### Lihat `openapi.json` + +Jika anda penasaran bagaimana skema OpenAPI polos seperti apa, FastAPI secara otomatis membuat JSON (schema) dengan deksripsi API anda. + +anda bisa melihatnya di: http://127.0.0.1:8000/openapi.json. + +Anda akan melihat JSON yang dimulai seperti: + +```JSON +{ + "openapi": "3.1.0", + "info": { + "title": "FastAPI", + "version": "0.1.0" + }, + "paths": { + "/items/": { + "get": { + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + + + +... +``` + +#### Kegunaan OpenAPI + +Skema OpenAPI adalah tulang punggung dua sistem dokumentasi API interaktif yang ada di FastAPI. + +Ada banyak alternatif sistem dokumentasi lainnya yang semuanya berdasarkan OpenAPI. Anda bisa menambahkannya ke aplikasi **FastAPI** anda. + +Anda juga bisa menggunakan OpenAPI untuk membuat kode secara otomatis, untuk klien yang menggunakan API anda. Sebagai contoh, frontend, aplikasi mobile atau IoT. + +## Ringkasan, secara bertahap + +### Langkah 1: impor `FastAPI` + +{* ../../docs_src/first_steps/tutorial001.py hl[1] *} + +`FastAPI` adalah class Python yang menyediakan semua fungsionalitas API anda. + +/// note | Detail Teknis + +`FastAPI` adalah class turunan langsung dari `Starlette`. + +Anda bisa menggunakan semua fungsionalitas Starlette dengan `FastAPI` juga. + +/// + +### Langkah 2: buat "instance" dari `FastAPI` + +{* ../../docs_src/first_steps/tutorial001.py hl[3] *} + +Di sini variabel `app` akan menjadi sebuah "instance" dari class `FastAPI`. + +Ini akan menjadi gerbang utama untuk membuat semua API anda. + +### Langkah 3: Buat *operasi path* + +#### Path + +"Path" atau jalur di sini merujuk ke bagian URL terakhir dimulai dari `/` pertama. + +Sehingga, URL seperti: + +``` +https://example.com/items/foo +``` + +...path-nya adalah: + +``` +/items/foo +``` + +/// info + +"path" juga biasa disebut "endpoint" atau "route". + +/// + +ketika membuat API, "path" adalah jalan utama untuk memisahkan "concern" dan "resources". + +#### Operasi + +"Operasi" di sini merujuk ke salah satu dari metode HTTP berikut. + +Salah satu dari: + +* `POST` +* `GET` +* `PUT` +* `DELETE` + +...dan operasi lainnya yang unik: + +* `OPTIONS` +* `HEAD` +* `PATCH` +* `TRACE` + +Dalam protokol HTTP, anda bisa berkomunikasi ke setiap path menggunakan satu (atau lebih) metode di atas. + +--- + +Ketika membuat API, anda umumnya menggunakan metode HTTP tertentu untuk proses tertentu. + +Umumnya menggunakan: + +* `POST`: untuk membuat data. +* `GET`: untuk membaca data. +* `PUT`: untuk memperbarui data. +* `DELETE`: untuk menghapus data. + +Sehingga, di OpanAPI, setiap metode HTTP ini disebut sebuah "operasi". + +Kita akan menyebut mereka juga "**operasi**". + +#### Mendefinisikan *dekorator operasi path* + +{* ../../docs_src/first_steps/tutorial001.py hl[6] *} + +`@app.get("/")` memberitahu **FastAPI** bahwa fungsi di bawahnya mengurusi request yang menuju ke: + +* path `/` +* menggunakan operasi get + +/// info | `@decorator` Info + +Sintaksis `@sesuatu` di Python disebut "dekorator". + +Dekorator ditempatkan di atas fungsi. Seperti sebuah topi cantik (Saya pikir istilah ini berasal dari situ). + +"dekorator" memanggil dan bekerja dengan fungsi yang ada di bawahnya + +Pada kondisi ini, dekorator ini memberi tahu **FastAPI** bahwa fungsi di bawah nya berhubungan dengan **path** `/` dengan **operasi** `get`. + +Sehingga disebut **dekorator operasi path**. + +/// + +Operasi lainnya yang bisa digunakan: + +* `@app.post()` +* `@app.put()` +* `@app.delete()` + +Dan operasi unik lainnya: + +* `@app.options()` +* `@app.head()` +* `@app.patch()` +* `@app.trace()` + +/// tip | Tips + +Jika anda bisa menggunakan operasi apa saja (metode HTTP). + +**FastAPI** tidak mengharuskan anda menggunakan operasi tertentu. + +Informasi di sini hanyalah sebagai panduan, bukan keharusan. + +Sebagai contoh, ketika menggunakan GraphQL, semua operasi umumnya hanya menggunakan `POST`. + +/// + +### Langkah 4: mendefinisikan **fungsi operasi path** + +Ini "**fungsi operasi path**" kita: + +* **path**: adalah `/`. +* **operasi**: adalah `get`. +* **fungsi**: adalah fungsi yang ada di bawah dekorator (di bawah `@app.get("/")`). + +{* ../../docs_src/first_steps/tutorial001.py hl[7] *} + +Ini adalah fungsi Python. + +Fungsi ini dipanggil **FastAPI** setiap kali menerima request ke URL "`/`" dengan operasi `GET`. + +Di kondisi ini, ini adalah sebuah fungsi `async`. + +--- + +Anda bisa mendefinisikan fungsi ini sebagai fungsi normal daripada `async def`: + +{* ../../docs_src/first_steps/tutorial003.py hl[7] *} + +/// note | Catatan + +Jika anda tidak tahu perbedaannya, kunjungi [Async: *"Panduan cepat"*](../async.md#in-a-hurry){.internal-link target=_blank}. + +/// + +### Langkah 5: hasilkan konten + +{* ../../docs_src/first_steps/tutorial001.py hl[8] *} + +Anda bisa menghasilkan `dict`, `list`, nilai singular seperti `str`, `int`, dll. + +Anda juga bisa menghasilkan model Pydantic (anda akan belajar mengenai ini nanti). + +Ada banyak objek dan model yang secara otomatis dikonversi ke JSON (termasuk ORM, dll). Anda bisa menggunakan yang anda suka, kemungkinan sudah didukung. + +## Ringkasan + +* Impor `FastAPI`. +* Buat sebuah instance `app`. +* Tulis **dekorator operasi path** menggunakan dekorator seperti `@app.get("/")`. +* Definisikan **fungsi operasi path**; sebagai contoh, `def root(): ...`. +* Jalankan server development dengan perintah `fastapi dev`.