From 14cc7b12c429942765b68c86cc1a386f972ff03e Mon Sep 17 00:00:00 2001 From: Alnyz Date: Tue, 12 Dec 2023 16:00:51 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90Add=20indonesia=20translator=20for?= =?UTF-8?q?=20`docs/id/features.md`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/id/docs/features.md | 199 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 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..e41abe187 --- /dev/null +++ b/docs/id/docs/features.md @@ -0,0 +1,199 @@ +# Fitur + +## Fitur-fitur FastAPI + +**FastAPI** memberi kamu hal berikut: + +### Berdasarkan standar terbuka + +* OpenAPI untuk pembuatan API, termasuk deklarasi path operations, parameters, body requests, keamanan, dll. +* Dokumentasi model data otomatis dengan JSON Schema (JSON Schema sebagai dasar OpenAPI itu sendiri). +* Dirancang dengan standar ini setelah analisis yang cermat. bukan hanya sebagai lapisan tambahan yang diimplementasikan setelahnya. +* Hal ini juga memungkinkan **membuat klien kode** otomatis dalam banyak bahasa. + +### Dokumentasi Otomatis + +Dokumentasi API interaktif dan antarmuka pengguna web untuk eksplorasi. Karena framework kerja ini mengacu pada OpenAPI, terdapat beberapa pilihan, 2 di antaranya sudah termasuk secara bawaan. + +* Swagger UI, Dengan eksplorasi interaktif, panggil dan uji API kamu langsung dari browser. + +![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 3.6 standar (berkat Pydantic). Tidak ada sintaks baru yang perlu dipelajari. Hanya standar Python modern. + +Jika kamu memerlukan tutorial singkat selama 2 menit tentang cara menggunakan tipe data Python (meskipun kamu tidak menggunakan FastAPI), lihat tutorial singkat ini: [Python Types](python-types.md){.internal-link target=_blank}. + +Menulis Python standar dengan tipe data: + +```Python +from datetime import date + +from pydantic import BaseModel + +# deklarasi variable dengan tipe str +# dan mendapatkan editor support di dalam function +def main(user_id: str): + return user_id + + +# Pydantic model +class User(BaseModel): + id: int + name: str + joined: date +``` + +Yang kemudian dapat digunakan seperti: + +```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: + + Gunakan kunci dan nilai dict `second_user_data` secara langsung sebagai key-value, yang setara dengan: `User(id=4, name="Mary", join="2018-11-30")` + +### Dukungan Editor + +Semua framework dirancang agar mudah dan intuitif untuk digunakan, semua keputusan diuji pada banyak editor bahkan sebelum memulai pengembangan, untuk memastikan pengalaman pengembangan terbaik. + +Dalam survei pengembang Python terakhir sudah jelas. bahwa fitur yang paling banyak digunakan adalah "autocompletion". + +Seluruh framework **FastAPI** didasarkan pada hal tersebut. Autocompletion bekerja dimanapun. + +Kamu jarang perlu kembali ke dokumentasi. + +Berikut cara editor-mu dapat membantu kamu: + +* 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) + +Kamu akan menyelesaikan kode yang mungkin kamu anggap mustahil sebelumnya. Misalnya, kunci `harga` di dalam badan JSON (yang bisa saja bersarang) yang berasal dari permintaan. + +Tidak perlu lagi mengetik nama kunci yang salah, bolak-balik antar dokumen, atau menggulir ke atas dan ke bawah untuk mengetahui apakah kamu akhirnya menggunakan `username` atau `user_name`. + +### Singkat + +Memiliki **nilai bawaan** yang masuk akal untuk semua hal, dengan konfigurasi opsional di mana-mana. Semua parameter dapat disesuaikan untuk melakukan apa yang kamu butuhkan dan untuk mendefinisikan API yang kamu perlukan. + +Namun, secara default, semuanya **"berfungsi dengan baik"** + +### Validasi + +* Validasi untuk sebagian besar (atau semua?) **tipe data** Python, termasuk: + * JSON objek (`dict`). + * JSON array (`list`) mendefinisikan tipe barang. + * String (`str`), mendefinisikan panjang minimal dan maksimal. + * Angka (`int`, `float`) dengan nilai minimal dan maksimal, dll. + +* Validasi untuk tipe data yang lebih eksotik, seperti: + * URL. + * Email. + * UUID. + * ...dan lain-lain. + +Semua validasi ditangani oleh **Pydantic**, sebuah alat yang sudah teruji dan kuat. + +### Keamanan dan autentikasi + +Keamanan dan autentikasi yang terintegrasi. Tanpa berkompromi dengan database atau model data. + +Semua skema keamanan yang ditentukan di OpenAPI, termasuk: + +* HTTP Basic. +* **OAuth2** (dengan **JWT tokens**). Cek tutorial di [OAuth2 dengan JWT](tutorial/security/oauth2-jwt.md){.internal-link target=_blank}. +* API keys didalam: + * Headers. + * Query parameters. + * Cookies, dll. + +Plus semua fitur keamanan dari Starlette (Termassuk **session cookies**). + +Semuanya dibangun sebagai alat dan komponen yang dapat digunakan kembali dan mudah diintegrasikan dengan sistem-mu, penyimpanan data, database relasional dan NoSQL, dll. + +### Injeksi Dependensi + +FastAPI menyertakan fitur yang sangat mudah digunakan, namun sangat kuat Injeksi Dependensi sistem. + +* Bahkan dependensi pun bisa memiliki dependensi, sehingga menciptakan hierarki atau **"grafik" dependensi**. +* semua **otomatis ditangani** oleh framework. +* Semua dependensi dapat memerlukan data dari permintaan dan **menambah batasan operasi jalur** dan dokumentasi otomatis. +* **Validasi otomatis** bahkan untuk parameter *operasi jalur* yang ditentukan dalam dependensi. +* Dukungan untuk sistem autentikasi penggunaan yang kompleks, **koneksi database**, dll. +* **Tanpa kompromi** dengan database, frontend, dll. Namun integrasi yang mudah dengan semuanya. + +### "plug-ins" Tanpa Batas + +atau dengan kata lain, tidak butuh, impor dan gunakan kode yang kamu perlukan. + +Integrasi apa pun dirancang agar mudah digunakan (dengan dependensi) sehingga kamu dapat membuat "plug-in" untuk aplikasi kamu dalam 2 baris kode menggunakan struktur dan sintaksis yang sama dengan yang digunakan untuk *operasi jalur* kamu. + +### Uji + +* 100% cangkupan tes. +* 100% tipe annotated basis kode. +* Digunakan dalam aplikasi produksi. + +## Fitur-fitur Starlette + +**FastAPI** sepenuhnya kompatibel dengan (dan berdasarkan) Starlette. Jadi, kode tambahan Starlette apa pun yang kamu miliki, juga akan berfungsi. + +`FastAPI` sebenarnya adalah sub-kelas dari `Starlette`. Jadi, jika kamu sudah mengetahui atau menggunakan Starlette, sebagian besar fungsinya akan bekerja dengan cara yang sama. + +Dengan **FastAPI** kamu mendapatkan semua **Starlette**'s fitur (Karena FastAPI hanyalah Starlette yang ditingkatkan): + +* Performa yang sangat mengesankan. Ini adalah salah satu framework Python tercepat yang tersedia, setara dengan **NodeJS** dan **Go**. +* Didukung **WebSocket**. +* Didukung **GraphQL**. +* Tugas latar belakang yang sedang dalam proses. +* Startup dan shutdown events. +* Tes klien dibuat dengan HTTPX. +* **CORS**, GZip, Static Files, Streaming responses. +* Dukungan **Session dan Cookie**. +* 100% cangkupan tes. +* 100% tipe annotated kode basis. + +## Fitur-fitur Pydantic + +**FastAPI** sepenuhnya kompatibel dengan (dan berdasarkan) Pydantic. Jadi, kode tambahan Pydantic apa pun yang kamu miliki, juga akan berfungsi. + +Termasuk perpustakaan eksternal juga berbasis Pydantic, seperti ORMs, ODMs untuk database. + +Ini juga berarti bahwa dalam banyak kasus kamu dapat meneruskan objek yang sama yang kamu dapatkan dari permintaan **langsung ke database**, karena semuanya divalidasi secara otomatis. + +Hal yang sama berlaku sebaliknya, dalam banyak kasus kamu cukup meneruskan objek yang kamu dapatkan dari database **langsung ke klien**. + +Dengan **FastAPI** kamu mendapatkan semua **Pydantic**'s fitur (karena FastAPI didasarkan pada Pydantic untuk semua penanganan data): + +* **Tidak ada kesulitan untuk dipahami**: + * Tidak ada bahasa baru yang perlu dipelajari. + * Jika kamu tau Python tipe kamu tau cara menggunakan Pydantic. +* Berinteraksi dengan baik dengan **IDE/linter/brain**: + * Karena struktur data pydantic hanyalah turunan dari kelas yang kamu tentukan; auto-completion, linting, mypy, dan intuisi kamu semuanya akan berfungsi dengan baik dengan data kamu yang telah divalidasi. +* Validasi **kompleks struktur**: + * Pemanfaatan model Pydantic berhirarki, `List` dan `Dict` dari Python `typing`’s, dan sebagainya. + * Dan validator memungkinkan skema data kompleks untuk dapat didefinisikan, diperiksa, dan didokumentasikan dengan jelas dan mudah seperti JSON Schema. + * Kamu dapat memiliki **objek JSON** yang sangat dalam dan membuat semuanya divalidasi dan diberi anotasi. +* **Diperluas**: + * Pydantic memungkinkan tipe data khusus ditentukan atau kamu dapat memperluas validasi dengan metode pada model yang dihiasi dengan dekorator validator. +* 100% cangkupan tes.