Tur Mini ASP.NET 5 : Bagian 5 – Web Api

Setelah tulisan paling terakhir dari seri ini saya publish pada 16 September 2015, selanjutnya selama hampir 2 bulan saya belum menulis lanjutannya. Alasannya nomor satu pasti karena sibuk dan kemudian disusul menjadi malas meneruskan. Memang suatu kesulitan tersendiri untuk konsisten menuliskan artikel yang berseri.

ASP.NET 5 Mini Tour

Alhamdulillah kali ini saya berniat untuk meneruskan seri tulisan ini sampai tamat, sampai total ada 6 bagian.

Tulisan ini merupakan bagian dari tulisan berseri yang terdiri dari beberapa artikel di bawah
1. Memulai
2. Startup
3. MVC 6
4. Dependency Injection
5. Web API (Tulisan ini)
6. Entity Framework 7 (Coming soon)

Dependency dan Startup

Dependency dan konfigurasi startup yang diperlukan untuk membuat Web Api pada ASP.NET 5 sama dengan yang digunakan untuk membuat MVC. Karena sudah sama maka kita tidak perlu melakukannya lagi.

Khusus bagi pembaca yang langsung terdampar ke halaman ini tanpa sebelumnya tahu bagaimana menambahkan dependency dan mengkonfigurasi Startup, saya persilahkan untuk membacanya pada artikel Bagian 3 – MVC 6.

Membuat Model

Model menggambarkan data yang ada pada aplikasi ASP.NET kita. Untuk contoh kali ini kita menggunakan model Book.

Pada folder Models tambahkan file dengan nama Book.cs dan sesuaikan kode menjadi seperti di bawah

Membuat Repository

Untuk kesederhanaan contoh dan karena akses ke database menggunakan Entity Framework belum saya bahas maka repository yang akan kita gunakan cukuplah menggunakan Dictionary untuk menyimpan objek secara sementara di dalam memory.

Pada folder Repository Buat sebuah file dengan nama IBookRepository.cs dengan kontennya yang seperti di bawah ini.

Selanjutnya masih di folder yang sama, buat file dengan nama BookRepository yang mengimplementasi interface tadi.

Mendaftarkan repository untuk di-inject

Dengan membuat interface kita bisa melakukan decouple antara repository dengan controller yang akan menggunakannya nanti.

Kalau dengan menggunakan new maka akan terjadi coupling maka untuk membuat decouple kita menggunakan Dependency Injection.

Masih ingat dengan tulisan sebelumnya pada seri ini?. Ya, cara untuk melakukan DI sudah saya jelaskan di sini. Untuk melakukannya kita peru menambahkan sedikit kode pada file Startup.cs.

Buka file Startup.cs dan tambahkan sebaris kode di bawah ini di dalam method ConfigureServices.

Membuat Controller

Controller ini digunakan untuk menangani request HTTP. Pada folder Controllers buat sebuah file baru dengan nama BookController dan ketikkan kode di bawah ini di dalamnya

Controller di atas akan di-mapping ke dalam request yang berupa HTTP method dan URL pada tabel di bawah ini

API (HTTP Method+URL) Deskripsi
GET api/book Mengambil data semua buku
GET api/book/{id} Mengambil data buku berdasarkan id
POST api/book Menambah data buku baru
PUT api/book/{id} Mengupdate data buku berdasarkan id
DELETE api/book/{id} Menghapus data buku berdasarkan id

Ngomong-ngomong kalau pembaca pernah belajar Web Api pada ASP.NET menggunakan versi sebelum ASP.NET 5 maka akan menemui perbedaan-perbedaan. Yang paling mencolok adalah bahwa MVC dan Web Api sekarang tipe project-nya sama, sama sekali tidak ada bedanya. Hal ini sempat saya singgung pada artikel perkenalan bahwa sekarang ASP.NET memang menjadi 1. Istilah keren yang Microsoft sebutkan adalah One ASP.NET.

Selain masalah tipe project yang sekarang sama dengan MVC, Web Api juga memiliki base controller yang sama lho!. Kalau dulu base controller dari MVC adalah Controller sedangkan untuk Web Api adalah ApiController, sekarang keduanya sama-sama memiliki base class Controller.

Penjelasan Kode Controller

Route

Mungkin yang pertama kali diperhatikan adalah kode ini ya yang ada dibagian awal controller.

Kode di atas digunakan untuk mapping URL ke dalam controller. [controller] maksudnya adalah nama dari kelas controller minus kata Controller di belakangnya. Jadi untuk mengakses controller yang kita buat maka digunakan URL api/book.

Kalau masih asing dengan gaya routing yang menggunakan annotation, coba baca penjelasan saya di artikel Attribute Routing di ASP.NET MVC 5.

HTTP Method

Pada masin-masing method action pada controller di atas terdapat annotation yang menandai method action tersebut bisa di-invoke menggunakan HTTP Method yang mana.

Khusus untuk yang memiliki {id} maka URL yang digunakan untuk mengakses adalah api/book/{id}. Jika URL yang diakses misalnya adalah api/book/5 berarti id bernilai sama dengan 5.

Kemudian ada lagi [FromBody], digunakan untuk deserialize json yang dikirim melalui request body menjadi objek dari kelas Book. Istilahnya binding, jadi otomatis nilai yang dikirim melalui JSON menjadi nilai property dari objek kelas Book.

Response

Dari kode controller di atas, yok bahas satu persatu yang berkaitan dengan response yang diberikan ke klien.

Web Api ini ketika nilai yang dikembalikan sebagai response adalah sebuah objek atau koleksi dari objek maka yang dikembalikan otomatis berubah menjadi JSON/XML tergantung permintaan klien. Contohnya pada method GetAll, koleksi dari objek Book langsung dijadikan nilai kembalian.

Kali ini berbeda karena nilai yang dikembalikan tidak langsung objek atau koleksi objek tetapi objek yang mengimplementasi interface IActionResult.

Kenapa tidak langsung objek seperti pada method sebelumnya?, jawabannya adalah karena kita perlu mengembalikan HttpNotFound untuk kondisi tertentu yang mana merupakan implementasi dari interface IActionResult. Kalau nilai kembaliannya adalah objek dari Book maka sudah pasti compile error.

Kemudian ketika ingin mengembalikan objek dari kelas Book bagaimana? sedangkan nilai kembalian yang diharuskan adalah IActionResult. Tinggal gunakan saja kelas ObjectResult seperti contoh di atas.

Nah yang ini berbeda lagi. Ketika validasi gagal maka Api mengirim kode status 400 dan juga pesan error. Dan kemudian ketika validasi berhasil dan objek baru berhasil dibuat maka digunakan CreatedAtAction yang akan memberikan kode status 200 dan url detail dari objek baru tadi.

Jujur saja untuk Web Api biasanya saya cuma menggunakan 404 kalau error dan 200 untuk sukses haha ? mesti menimba ilmu lagi.

Tes Api

Ngomong-ngomong sudah bisa menggunakan POSTMAN atau tools yang lain seperti Fiddler untuk mengetes Web Api belum?. Kalau belum silahkan belajar ?.

Ini ada tutorial penggunaan POSTMAN, hanya membahas cara untuk mengeksekusi method HTTTP GET.

Sampai jumpa di tulisan selanjutnya yang menjadi tulisan akhir dari seri ASP.NET 5.

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

Leave a Reply

Your email address will not be published. Required fields are marked *