Service Docs pada Micro Framework Lumen #14



Pada blog kali ini saya akan membahas service docs. Saat ini API yang kita buat belum memiliki dokumentasi. Kita akan membuat dokumentasi bagaimana cara mengakses API yang telah kita buat.


Mempersiapkan Docs Generator

Untuk membuat docs generator kita akan menggunakan swagger-ui (https://swagger.io/tools/swagger-ui/). Pertama kita install terlebih dahulu swagger-php plugins nya menggunakan composer seperti berikut.

composer require zircote/swagger-php

Screenshot_22.png

Selanjutnya membuat artisan command file. Buat file app/Console/Commands/SwaggerDocScanner.php

Screenshot_23.png

Buka file app/Console/Kernel.php, tambahkan code berikut pada variabel commands.

Screenshot_24.png

Untuk menjalankan artisan command SwaggerDocScanner dan menggenerate docs, pada terminal/CommandPrompt jalankan command php artisan swaggerdoc:scan, command teserbut akan membuat file public/swaggerdoc.json. Saat ini kalau dijalankan, command ini bakal error, karena kita belum mendefiniskan anotasi docs nya.

Untuk tampilan User Interface nya kita perlu mebuat file html di public folder. Buat file public/api-docs.html, code nya seperti berikut.

Screenshot_25.png

Atau anda juga bisa copy melalui link berikut https://github.com/sunnyagarwal008/setup-swagger-ui-in-one-page/blob/master/swagger-ui.html.

Jalankan servernya, kemudian akses endpoint http://localhost:8000/api-docs.html, maka tampilan akan seperti berikut.

Screenshot_26.png

Membuat Dokumentasi API (Get Request)

Kita akan membuat API dokumentasi untuk endpoint /register. Buka file app/Http/Controllers/Controller.php, tambahkan code dibawah ini.

Screenshot_27.png

Buka file app/Http/Controllers/Public/PostsController.php, tambahkan code dibawah ini.

Screenshot_29.png

Pada terminal/CommandPrompt jalankan command di bawah ini.

php artisan swaggerdoc:scan

Setiap kali anda mengubah anotasi docs, harus menjalankan command tersebut supaya bisa update docs nya.

Screenshot_28.png

Pada browser buka http://localhost:8000/api-docs.html

Screenshot_30.png

Jika di click pada button GET, maka tampilanya akan seperti berikut.

Screenshot_31.png

Silahkan dicoba dengan mengklik button Try it out.

Membuat Dokumentasi API (Post Request)

Kali ini kita akan membuat t API dokumentasi untuk endpoint /register. Untuk membuat dokumentasi API mengenai Post Request, buka file App/Http/Controllers/AuthController.php dan tambahkan code berikut.

Screenshot_32.png

Pada terminal/CommandPrompt jalankan command di bawah ini. Setiap kali anda mengubah anotasi docs, harus menjalankan command di bawah ini supaya bisa update
docs nya.

php artisan swaggerdoc:scan

Akses kembali endpoint http://localhost:8000/api-docs.html

Screenshot_33.png

Jika di click pada button POST, maka tampilannya akan seperti berikut.

Screenshot_34.png

Silahkan dicoba dengan mengklik button Try it out.

Membuat dokumentasi untuk semua endpoint

Pertama kita akan membuat dokumentasi untuk endpoint user login, tambahkan script berikut pada AuthController.php.

Screenshot_35.png

Jalankan command berikut pada terminal.

php artisan swaggerdoc:scan

Akses kembali http://localhost:8000/api-docs.html, maka akan muncul endpoint untuk user login.

Screenshot_36.png

Silahkan dicoba dengan mengklik button Post lalu Try it out.

Screenshot_37.png

Jika berhasil maka akan muncul respon token yang akan kita gunakan untuk authentication.

Tambahkan script berikut pada Controller.php untuk menambahkan fitur authorization agar semua endpoint post yang akan kita akses perlu mengirimkan token terlebih dahulu.

Screenshot_38.png

Jalankan kembali command berikut.

php artisan swaggerdoc:scan

Maka ketika mengakses http://localhost:8000/api-docs.html, akan muncul button Authorize sebagai akses token yang kita gunakan untuk mengakses endpoint.

Screenshot_39.png

Selanjutnya kita akan membuat dokumentasi untuk function show tambahkan script berikut pada Public\PostsController.php.


Screenshot_40.png

Jalankan kembali command berikut.

php artisan swaggerdoc:scan

Kemudian akses kembali http://localhost:8000/api-docs.html, maka akan muncul endpoint baru.

Screenshot_41.png

Coba dengan klik button GET, lalu Try it out.

Dokumentasi untuk endpoint /posts

Sebelumnya kita baru membuat dokumentasi pada endpoint /public/posts, selanjutya kita akan akan membuat dokumentasi untuk endpoint /posts, tambahkan script2 berikut pada setiap function di controller App\Http\Controllers\PostsController.php.

Screenshot_42

Screenshot_66.png

Screenshot_44.png

Screenshot_65.png

Screenshot_64.png

Seperti biasa jalankan command berikut.

php artisan swaggerdoc:scan

Maka akan muncul endpoint-enpoint berikut.

Screenshot_50.png

Sekarang tinggal kita test satu per satu endpoint Posts, namun sebelum itu kita perlu login terlebih dahulu untuk mendapatkan access token. Klik endpoint User login, klik Try it out, masukkan value email dan password yang valid, lalu execute.

Screenshot_53.png

Jika berhasil maka akan muncul respon access token.

Screenshot_54.png

Klik Authorize, dan masukkan access token nya.

Screenshot_55.png

Pertama kita coba akses endpoint get posts, klik Try it out, bisa dengan mengirimkan parameter page ataupun tidak, lalu execute.

Screenshot_57.png

JIka berhasil respon akan seperti berikut.

Screenshot_56.png

Kedua kita coba create new posts, klik Try it out, lalu ketikkan value yang akan dikirimkan, kemudian execute.

Screenshot_51

Jika berhasil maka respon akan seperti berikut.

Screenshot_52.png

Ketiga ktia coba akses endpoint Get posts by id denga mengirimkan parameter berupa id posts.

Screenshot_67.png

JIka berhasil respon akan seperti berikut.

Screenshot_59.png

Keempat kita coba akses endpoint Update posts, dengan mengirimkan parameter id, dan value untuk update data posts.

Screenshot_60.png

Jika berhasil maka respon akan seperti berikut.

Screenshot_61.png

Terakhir kita coba akses endpoint Delete post by id dengan mengirimkan paramter id.

Screenshot_62.png

Jika berhasil maka respon akan seperti berikut.

Screenshot_63.png

Sekian tutorial membuat dokumentasi API menggunakan swagger ini, selamat mencoba

Hatur Nuhun

0 komentar:

Posting Komentar