From ccd567ded340425b5ec2191877d28f98ac1f672f Mon Sep 17 00:00:00 2001 From: t4f1d Date: Fri, 27 Jun 2025 15:27:22 +0700 Subject: [PATCH 1/6] Add Indonesian translation for docs/id/docs/learn/index.md --- docs/id/docs/learn/index.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/id/docs/learn/index.md diff --git a/docs/id/docs/learn/index.md b/docs/id/docs/learn/index.md new file mode 100644 index 000000000..61a1437bf --- /dev/null +++ b/docs/id/docs/learn/index.md @@ -0,0 +1,5 @@ +# Pembelajaran + +Di sini Anda akan menemukan bab pengantar dan tutorial untuk mempelajari **FastAPI**. + +Anda dapat menganggap ini sebagai **buku**, **kursus**, dan cara **resmi** yang direkomendasikan untuk belajar FastAPI. 😎 \ No newline at end of file From 4e77d6e2b9ac112fa2c6a2985033424ad6bdb6bf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 06:20:54 +0000 Subject: [PATCH 2/6] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20for?= =?UTF-8?q?mat=20from=20pre-commit.com=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/id/docs/learn/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/id/docs/learn/index.md b/docs/id/docs/learn/index.md index 61a1437bf..2e17f3548 100644 --- a/docs/id/docs/learn/index.md +++ b/docs/id/docs/learn/index.md @@ -2,4 +2,4 @@ Di sini Anda akan menemukan bab pengantar dan tutorial untuk mempelajari **FastAPI**. -Anda dapat menganggap ini sebagai **buku**, **kursus**, dan cara **resmi** yang direkomendasikan untuk belajar FastAPI. 😎 \ No newline at end of file +Anda dapat menganggap ini sebagai **buku**, **kursus**, dan cara **resmi** yang direkomendasikan untuk belajar FastAPI. 😎 From d5abb0bff0a70ed138ee7e93f3f73b59e2b512d6 Mon Sep 17 00:00:00 2001 From: t4f1d Date: Mon, 30 Jun 2025 13:24:08 +0700 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=8C=90=20Add=20Indonesian=20translati?= =?UTF-8?q?on=20for=20docs/id/docs/features.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/id/docs/features.md | 208 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 docs/id/docs/features.md diff --git a/docs/id/docs/features.md b/docs/id/docs/features.md new file mode 100644 index 000000000..fe6c8089c --- /dev/null +++ b/docs/id/docs/features.md @@ -0,0 +1,208 @@ +# Fitur + +## Fitur FastAPI + +**FastAPI** memberi Anda hal-hal berikut: + +### Berdasarkan standar terbuka + +* OpenAPI untuk pembuatan API, termasuk deklarasi path operasi, parameter, request body, keamanan, dll. +* Dokumentasi model data otomatis dengan JSON Schema (karena OpenAPI sendiri didasarkan pada JSON Schema). +* Dirancang berdasarkan standar-standar ini setelah studi yang cermat, bukan sebagai lapisan tambahan yang dibuat belakangan. +* Hal ini juga memungkinkan penggunaan **pembuatan kode klien** secara otomatis dalam berbagai bahasa pemrograman. + +### Dokumentasi Otomatis + +Antarmuka pengguna web untuk dokumentasi dan eksplorasi API yang interaktif. Karena framework ini didasarkan pada OpenAPI, tersedia berbagai pilihan, dengan 2 di antaranya sudah disertakan secara bawaan. + +* Swagger UI, dengan eksplorasi interaktif, Anda bisa langsung memanggil dan menguji API dari peramban. + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) + +* Dokumentasi API alternatif dengan ReDoc. + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) + +### Hanya Python Modern + +Semuanya didasarkan pada deklarasi **tipe Python** standar (berkat Pydantic). Tidak ada sintaks baru yang perlu dipelajari. Cukup Python modern standar. + +Jika Anda membutuhkan penyegaran 2 menit tentang cara menggunakan tipe Python (bahkan jika Anda tidak menggunakan FastAPI), periksa tutorial singkat: [Python Types](python-types.md){.internal-link target=_blank}. + +Anda cukup menulis Python standar dengan tipe: + +```Python +from datetime import date + +from pydantic import BaseModel + +# Mendeklarasikan variabel sebagai string (str) +# dan mendapatkan dukungan editor di dalam fungsi tersebut +def main(user_id: str): + return user_id + + +# Sebuah model Pydantic +class User(BaseModel): + id: int + name: str + joined: date +``` + +Fungsi tersebut kemudian bisa digunakan seperti berikut: + +```Python +my_user: User = User(id=3, name="John Doe", joined="2018-07-19") + +second_user_data = { + "id": 4, + "name": "Mary", + "joined": "2018-11-30", +} + +my_second_user: User = User(**second_user_data) +``` + +/// info + +`**second_user_data` berarti: + +Ambil pasangan kunci dan nilai dari Kamus (Dicts) `second_user_data` secara langsung sebagai argumen kunci-nilai, setara dengan: `User(id=4, name="Mary", joined="2018-11-30")`. + +/// + +### Bantuan Editor + +Seluruh framework dirancang agar mudah dan intuitif untuk digunakan, semua keputusan telah diuji pada berbagai editor bahkan sebelum pengembangan dimulai, demi memastikan pengalaman pengembangan terbaik. + +Dalam survei pengembang Python, jelas bahwa salah satu fitur yang paling banyak digunakan adalah "pelengkapan otomatis" (autocompletion). + +Seluruh framework **FastAPI** dirancang untuk memenuhi kebutuhan tersebut. Pelengkapan otomatis berfungsi di mana pun. + +Anda akan jarang perlu kembali ke dokumentasi. + +Berikut adalah contoh bagaimana editor Anda dapat membantu Anda: + +* Di Visual Studio Code: + +![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) + +* Di PyCharm: + +![editor support](https://fastapi.tiangolo.com/img/pycharm-completion.png) + +Anda akan mendapatkan pelengkapan otomatis dalam kode yang mungkin sebelumnya Anda anggap mustahil. Contohnya, kunci `price` di dalam body JSON (yang bisa saja bersarang) yang berasal dari sebuah request. + +Tidak ada lagi kesalahan penulisan nama kunci, bolak-balik antara dokumentasi, atau scroll naik-turun untuk mencari apakah Anda pada akhirnya menggunakan `username` atau `user_name`. + + +### Ringkas + +Framework ini memiliki pengaturan **bawaan** yang masuk akal untuk segala hal, dengan konfigurasi opsional di setiap bagian. Semua parameter bisa disesuaikan dengan cermat untuk memenuhi kebutuhan Anda dan mendefinisikan API yang Anda inginkan. + +Namun secara bawaan, semuanya **berjalan begitu saja**. + + +### Validasi + +* Validasi untuk sebagian besar (atau semua?) **tipe data** Python, termasuk: + * Objek JSON (`dict`). + * Array JSON (`list`) yang mendefinisikan tipe item. + * String (`str`) field, yang mendefinisikan panjang minimal dan maksimal. + * Angka (`int`, `float`) dengan nilai minimal dan maksimal, dan lain-lain. + +* Validasi untuk tipe yang lebih kompleks, seperti: + * URL. + * Email. + * UUID. + * ...dan lainnya. + +Semua validasi ditangani oleh **Pydantic** yang sudah mapan dan tangguh. + +### Keamanan dan Otentikasi + +Keamanan dan otentikasi terintegrasi, tanpa kompromi dengan basis data atau model data apa pun. + +Semua skema keamanan yang didefinisikan dalam OpenAPI dapat didukung, termasuk: + +* HTTP Basic. +* **OAuth2** (juga dengan **JWT tokens**). Anda bisa melihat tutorial disini [OAuth2 with JWT](tutorial/security/oauth2-jwt.md){.internal-link target=_blank}. +* Kunci API di: + * Headers. + * Query parameters. + * Cookies, dll. + +Ditambah semua fitur keamanan dari Starlette (termasuk **session cookies**). + +Semua fitur ini dibangun sebagai alat dan komponen yang dapat digunakan kembali, mudah diintegrasikan dengan sistem Anda, penyimpanan data, basis data relasional, dan NoSQL, dll. + + +### Injeksi Ketergantungan (Dependency Injection) + +FastAPI menyertakan sistem Injeksi Ketergantungan yang sangat mudah digunakan namun sangat kuat. + +* Bahkan ketergantungan dapat memiliki ketergantungan yang lain, menciptakan hierarki atau **"grafik" ketergantungan**. +* Semua **ditangani secara otomatis** oleh framework. +* Semua ketergantungan dapat meminta data dari request dan **menambah batasan operasi path** serta dokumentasi otomatis. +* **Validasi otomatis** bahkan untuk **parameter path operation** yang didefinisikan dalam ketergantungan. +* Dukungan untuk sistem otentikasi pengguna yang kompleks, **koneksi basis data**, dll. +* **Tidak ada kompromi** dengan basis data, frontend, dll., tetapi integrasi yang mudah dengan semuanya. + + +### "Plug-in" Tak Terbatas + +Atau dengan kata lain, tidak perlu "plug-in", cukup impor dan gunakan kode yang Anda butuhkan. + +Setiap integrasi dirancang agar sangat mudah digunakan (dengan ketergantungan) sehingga Anda dapat membuat "plug-in" untuk aplikasi Anda hanya dalam 2 baris kode menggunakan struktur dan sintaks yang sama dengan yang digunakan untuk **path operations** Anda. + + +### Teruji + +* 100% cakupan pengujian. +* 100% basis kode dengan anotasi tipe. +* Digunakan dalam aplikasi produksi. + + +## Fitur Starlette + +**FastAPI** sepenuhnya kompatibel dengan (dan berbasis pada) Starlette. Jadi, kode Starlette tambahan apa pun yang Anda miliki juga akan berfungsi. + +`FastAPI` sebenarnya adalah sub-kelas dari `Starlette`. Jadi, jika Anda sudah tahu atau menggunakan Starlette, sebagian besar fungsionalitasnya akan bekerja dengan cara yang sama. + +Dengan **FastAPI**, Anda mendapatkan semua fitur **Starlette** (karena FastAPI hanyalah Starlette yang lebih canggih): + +* Performa yang sangat mengesankan. Ini adalah salah satu framework Python tercepat yang tersedia, setara dengan **NodeJS** dan **Go**. +* Dukungan **WebSocket**. +* Tugas latar belakang dalam proses.. +* Event startup dan shutdown. +* Klien pengujian yang dibangun di atas HTTPX. +* **CORS**, GZip, Static Files, Streaming responses. +* Dukungan **Sesi and Cookie**. +* 100% cakupan pengujian. +* 100% basis kode dengan anotasi tipe. + + +## Fitur Pydantic + +**FastAPI** sepenuhnya kompatibel dengan (dan berbasis pada) Pydantic. Jadi, kode Pydantic tambahan apa pun yang Anda miliki juga akan berfungsi. + +Termasuk pustaka eksternal yang juga berbasis Pydantic, seperti ORM, ODM untuk basis data. + +Ini juga berarti bahwa dalam banyak kasus, Anda dapat meneruskan objek yang Anda dapatkan dari request **langsung ke basis data**, karena semuanya divalidasi secara otomatis. + +Hal yang sama berlaku sebaliknya, dalam banyak kasus Anda dapat langsung meneruskan objek yang Anda dapatkan dari basis data **langsung ke klien**. + +Dengan **FastAPI**, Anda mendapatkan semua fitur **Pydantic** (karena FastAPI berbasis pada Pydantic untuk semua penanganan data): + +* **Tidak membingungkan**: + * Tidak ada bahasa mikro definisi skema baru yang perlu dipelajari. + * Jika Anda tahu tipe Python, Anda tahu cara menggunakan Pydantic. +* Berfungsi dengan baik dengan **IDE/linter/brain**: + * Karena struktur data Pydantic hanyalah instans dari kelas yang Anda definisikan; pelengkapan otomatis, linting, mypy, dan intuisi Anda akan berfungsi dengan baik dengan data yang telah divalidasi. +* Validasi **struktur kompleks**: + * Penggunaan model Pydantic hierarkis, `List` and `Dict` dari `typing` Python, dll. + * Dan validator memungkinkan skema data kompleks didefinisikan, diperiksa, dan didokumentasikan dengan jelas dan mudah sebagai JSON Schema. + * Anda dapat memiliki objek **JSON yang bersarang** dalam dan semuanya tervalidasi serta teranotasi. +* **Dapat diperluas**: + * Pydantic memungkinkan tipe data kustom didefinisikan atau Anda dapat memperluas validasi dengan metode pada model yang dihiasi dengan decorator validator. +* 100% cakupan pengujian. \ No newline at end of file From bb394df0d569e7ef4c38a57cf11228f21a87bb3e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 06:26:33 +0000 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20for?= =?UTF-8?q?mat=20from=20pre-commit.com=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/id/docs/features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/id/docs/features.md b/docs/id/docs/features.md index fe6c8089c..a97146537 100644 --- a/docs/id/docs/features.md +++ b/docs/id/docs/features.md @@ -205,4 +205,4 @@ Dengan **FastAPI**, Anda mendapatkan semua fitur **Pydantic** (karena FastAPI be * Anda dapat memiliki objek **JSON yang bersarang** dalam dan semuanya tervalidasi serta teranotasi. * **Dapat diperluas**: * Pydantic memungkinkan tipe data kustom didefinisikan atau Anda dapat memperluas validasi dengan metode pada model yang dihiasi dengan decorator validator. -* 100% cakupan pengujian. \ No newline at end of file +* 100% cakupan pengujian. From 0333b6fda0cec04edeaed47f9bbd574e572f0190 Mon Sep 17 00:00:00 2001 From: t4f1d Date: Mon, 30 Jun 2025 13:27:44 +0700 Subject: [PATCH 5/6] only one page --- docs/id/docs/learn/index.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 docs/id/docs/learn/index.md diff --git a/docs/id/docs/learn/index.md b/docs/id/docs/learn/index.md deleted file mode 100644 index 2e17f3548..000000000 --- a/docs/id/docs/learn/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Pembelajaran - -Di sini Anda akan menemukan bab pengantar dan tutorial untuk mempelajari **FastAPI**. - -Anda dapat menganggap ini sebagai **buku**, **kursus**, dan cara **resmi** yang direkomendasikan untuk belajar FastAPI. 😎 From 08c0749468deab55be1733810f89001e8f9d6aa1 Mon Sep 17 00:00:00 2001 From: Mustafid Date: Thu, 3 Jul 2025 06:50:58 +0700 Subject: [PATCH 6/6] Update features.md Update Ketergantungan to Dependensi --- docs/id/docs/features.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/id/docs/features.md b/docs/id/docs/features.md index a97146537..d8f4d36fb 100644 --- a/docs/id/docs/features.md +++ b/docs/id/docs/features.md @@ -137,14 +137,14 @@ Ditambah semua fitur keamanan dari Starlette (termasuk **session cookies**). Semua fitur ini dibangun sebagai alat dan komponen yang dapat digunakan kembali, mudah diintegrasikan dengan sistem Anda, penyimpanan data, basis data relasional, dan NoSQL, dll. -### Injeksi Ketergantungan (Dependency Injection) +### Injeksi Dependensi (Dependency Injection) -FastAPI menyertakan sistem Injeksi Ketergantungan yang sangat mudah digunakan namun sangat kuat. +FastAPI menyertakan sistem Injeksi Dependensi yang sangat mudah digunakan namun sangat kuat. -* Bahkan ketergantungan dapat memiliki ketergantungan yang lain, menciptakan hierarki atau **"grafik" ketergantungan**. +* Bahkan dependensi dapat memiliki dependensi yang lain, menciptakan hierarki atau **"grafik" dependensi**. * Semua **ditangani secara otomatis** oleh framework. -* Semua ketergantungan dapat meminta data dari request dan **menambah batasan operasi path** serta dokumentasi otomatis. -* **Validasi otomatis** bahkan untuk **parameter path operation** yang didefinisikan dalam ketergantungan. +* Semua dependensi dapat meminta data dari request dan **menambah batasan operasi path** serta dokumentasi otomatis. +* **Validasi otomatis** bahkan untuk **parameter path operation** yang didefinisikan dalam dependensi. * Dukungan untuk sistem otentikasi pengguna yang kompleks, **koneksi basis data**, dll. * **Tidak ada kompromi** dengan basis data, frontend, dll., tetapi integrasi yang mudah dengan semuanya. @@ -153,7 +153,7 @@ FastAPI menyertakan sistem