7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. APIs

Membangun Startup Anda: Merancang API RESTful

Scroll to top
Read Time: 12 mins
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Running Multiple Domains
Building Your Startup With PHP: Bootstrap Your Home Page

Indonesian (Bahasa Indonesia) translation by Ari Ana (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Tutorial ini adalah bagian dari serial Membangun Startup Anda dengan PHP di Envato Tuts+. Dalam seri ini, saya membimbing Anda melalui peluncuran startup dari konsep ke kenyataan menggunakan aplikasi Meeting Planner saya sebagai contoh di kehidupan nyata. Setiap langkah di sepanjang jalan, saya akan merilis kode Meeting Planner sebagai contoh sumber terbuka yang bisa Anda pelajari. Saya juga akan membahas masalah bisnis terkait startup saat mereka muncul.

Mengapa Membangun sebuah API untuk Startup Anda?

Alasan utama saya menambahkan API untuk Meeting Planner saat ini adalah untuk membuat fondasi untuk membangun aplikasi mobile iOS. Aplikasi mobile akan menggunakan API untuk mendaftar dan login pengguna dan kemudian memungkinkan mereka untuk menjadwalkan rapat.

API juga memiliki efek sekunder membantu Anda memikirkan kembali dan lebih baik mengatur semua kode yang Anda tulis hingga saat ini. Tentu saja ada tempat di dalam kode Meeting Planner yang telah menjadi rumit. Sekarang saya harus menyederhanakannya lagi agar aplikasi mobile mereplikasi fitur di atas kerumitan.

Mungkin ada alasan lain di masa depan untuk membangun API. Misalnya, mungkin saya ingin memungkinkan pengembang pihak ketiga agar memperluas jenis rapat dan acara yang dijadwalkan Meeting Planner—memungkinkan mereka mengumpulkan dan berbagi data tambahan dalam prosesnya.

Sebagai pengingat, semua kode untuk Meeting Planner diberikan sumber terbuka dan ditulis dalam Kerangka Yii2 untuk PHP. Sebagian besar episode ini menjelaskan cara menggunakan Kerangka Yii untuk mendukung API. Jika Anda ingin mempelajari lebih lanjut tentang Yii2, periksa serial paralel Pemrograman dengan Yii2 saya.

Sebelum saya masuk ke kode API, saya ingin mendorong Anda untuk mencoba menjadwalkan pertemuan pertama Anda sehingga Anda tahu apa yang saya bicarakan.

Jika Anda memiliki pertanyaan tentang tutorial ini atau aplikasi itu sendiri, saya berpartisipasi dalam diskusi di bawah ini, dan Anda juga dapat menghubungi saya @lookahead_io di Twitter. Saya selalu terbuka untuk ide-ide fitur baru untuk Meeting Planner serta saran untuk episode seri mendatang.

Merancang API Anda

Ketika saya bersiap untuk membangun API, ada berbagai konsep yang perlu saya pahami. Saya membahas beberapa ini di Pemrograman dengan Yii2: Membangun API RESTful (Envato Tuts+).

Pertama, saya perlu membuat endpoint untuk API tempat semua panggilan dari aplikasi mobile akan tiba. Saya memutuskan untuk menggunakan pohon ketiga independen dalam kerangka Aplikasi Lanjutan Yii, mis. https://api.meetingplanner.io, bukan https://meetingplanner.io/api/. Ini memungkinkan pemisahan bersih dari kode API dari sisa layanan.

Kedua, saya perlu merancang keamanan ke dalam API. Dalam tutorial hari ini, saya akan menunjukkan keamanan alfa sederhana yang kita gunakan, tetapi kita akan memperkuatnya dari waktu ke waktu, dan saya mungkin akan menulis lebih banyak tentang ini di masa mendatang. Ada aspek keamanan dalam cara kami menggunakan dan mengirimkan kunci dan permintaan API, tetapi penting juga untuk memastikan API memberlakukan protokol keamanan aplikasi. Misalnya, pengguna tidak dapat meminta peserta rapat jika mereka bukan penyelenggara rapat atau salah satu pesertanya.

Ketiga, saya ingin menyiapkan kode API untuk versi. Misalnya, aplikasi iOS yang lebih lama yang belum diperbarui mungkin menggunakan API v1.0, sementara pembaruan kemudian mungkin memanggil API v2.0. Yii menyediakan metode untuk melakukan ini, tetapi saya belum menerapkannya dalam desain saat ini.

Keempat, saya ingin menyesuaikan sebanyak mungkin dengan standar REST. Itu adalah sesuatu yang sudah mulai saya lakukan tetapi akan membutuhkan lebih banyak riset untuk sepenuhnya diimplementasikan.

Akhirnya, untuk saat ini, saya perlu membahas luasnya fungsionalitas yang akan disediakan API. Awalnya, untuk pengembangan aplikasi mobile, saya fokus untuk menciptakan fungsionalitas read-only. Tutorial dan kode hari ini akan fokus terutama pada fungsionalitas aplikasi read-only, yaitu menunjukkan kepada saya pertemuan pengguna. Tapi itu termasuk pendaftaran pengguna juga. Dalam waktu dekat, kami akan menambahkan lebih banyak fungsi tulis seperti membuat rapat, menambahkan peserta, menambahkan tempat rapat, menyelesaikan undangan, dll.

Jadi, pertimbangkan tutorial ini sebagai langkah pertama menuju API layanan lengkap yang canggih untuk aplikasi kita.

Membangun API

Membuat Pohon Layanan API

Building Your Startup - the API treeBuilding Your Startup - the API treeBuilding Your Startup - the API tree

Meeting Planner menggunakan kerangka Advanced Application Yii, yang mencakup pohon front-end untuk aplikasinya dan pohon back-end untuk komponen administratif, dan kami akan membuat pohon ketiga untuk API.

Saya menjelaskan cara melakukan ini sebelumnya di Pemrograman dengan Yii2: Membangun API RESTful (Envato Tuts+).

Pertama, saya menduplikasi pohon back-end dan lingkungan terkait:

Dan saya menambahkan alias @api ke /common/config/bootstrap.php:

Selanjutnya, kita akan mulai membangun fungsionalitas inti.

Mengamankan API

Saya telah membuat beberapa keamanan dasar saat kita membuat dan menguji aplikasi iOS. Saya akan membuat ini lebih kuat di masa depan.

Semua panggilan API perlu mengetahui app_id dan app_secret. Ini akan ditransmisikan dalam beberapa bentuk HTTPS. Namun, tidak ada jaminan bahwa kita dapat melindungi ini, jadi kita harus akhirnya merancang aplikasi agar tahan terhadap kunci-kunci ini yang ditemukan.

Untuk saat ini, saya telah memperluas file mp.ini di /var/secure untuk memasukkan ini:

Kemudian, saya membuat model Service.php untuk mengelola verifikasi kunci-kunci ini. Saat kita membuatnya lebih kuat, saya hanya perlu memodifikasi satu bagian kode.

Selanjutnya, saya menyiapkan beforeAction di semua controller API untuk menggunakan kembali metode di atas:

Kelemahan utama di sini adalah bahwa kunci keamanan ditransmisikan dengan setiap panggilan dan parameter permintaan tidak ditandai. Mengirimnya melalui HTTPS akan membantu, tetapi tidak sepenuhnya aman. Saya akan memperbaiki ini di masa depan.

Registrasi dan Login

Satu-satunya dua panggilan API yang sepenuhnya bergantung pada kunci API adalah pendaftaran dan login. Pengguna mobile dapat mendaftar melalui OAuth dan mengirimkan token layanan OAuth mereka, atau mereka dapat memberikan alamat email mereka kepada kita secara langsung.

Setelah diterima, setiap pengguna diberikan token unik, dan token ini mengamankan panggilan API di masa depan dari pengguna tersebut.

Ada lagi yang harus saya lakukan untuk meningkatkan keamanan ini, tetapi saya juga tidak akan membahasnya hari ini.

Berikut kode awal untuk mendaftarkan pengguna melalui API dan membuat token:

UserToken adalah string acak 40-digit yang unik, yang membuatnya lebih sulit untuk ditebak daripada mempercayai bahwa Amerika akan memilih Donald Trump untuk memimpin mereka.

Controller Meeting

Sekarang, mari kita lihat panggilan untuk area spesifik dari API, meminta informasi tentang rapat. Inilah bagian awal dari /api/controllers/MeetingController.php:

Perhatikan di atas bagaimana setiap tindakan memverifikasi token sudah benar.

Kemudian, setiap panggilan API untuk Meetings disusun secara identik, seperti yang ditunjukkan di bawah ini (puji upaya saya dalam kedisiplinan):

Untuk saat ini, setiap panggilan mencakup $app_id, $app_secret, dan $token untuk pengguna yang sudah login. Saya akan mengubah ini untuk keamanan dalam waktu dekat. Ini aman, tetapi tidak aman.

Mari kita lihat actionList, yang mencantumkan rapat pengguna yang memfilter berdasarkan argumen $status untuk memfilternya:

Akhirnya, API dapat membatasi jumlah permintaan pertemuan untuk setiap status, yaitu menunjukkan 15 rapat terakhir dalam mode perencanaan oleh pengguna ini.

Semua metode Meeting dibangun ke dalam model MeetingAPI. Berikut kode untuk metode meetinglist():

Pertama, metodenya memverifikasi token sebagai milik pengguna:

Berikut kode untuk UserToken::lookup():

Kemudian, kita memeriksa filter untuk $status dan mengambil $timezone dari pengguna:

Dan akhirnya, kita melakukan kueri daftar pertemuan pengguna dan memindahkannya secara manual ke dalam array objek:

Meskipun mungkin ada cara yang lebih mudah untuk memetakan hasil database untuk dikembalikan dalam API, secara manual mentransposkan tabel yang paling rumit, Meeting, memungkinkan saya untuk mengontrol apa yang dihasilkan oleh hasil API bagi para pemrogram. Ini sebenarnya adalah kesempatan bagi saya untuk meningkatkan dan menyederhanakan API di atas kode asli dan properti database.

Misalnya, ada kode Meeting Planner yang harus menghasilkan sub-judul dalam antarmuka pengguna yang tidak disimpan dalam database. Daripada mengharuskan aplikasi iOS untuk menduplikasi kode rumit ini, kita hanya menghasilkan sub-judul dan mengembalikannya dalam hasil API.

Membuat Panggilan API

Inilah cara awal untuk membuat dan menguji panggilan API. Misalnya, jika saya membuat panggilan URL berikut:

Itu akan bekerja. Namun, untuk menguji dan melihatnya dalam aksinya, saya menggunakan Postman, sebuah ekstensi aplikasi Chrome, yang sangat berguna.

Inilah cara Anda dapat membuat panggilan API dengan Postman UX:

Building Your Startup - Postman API RequestsBuilding Your Startup - Postman API RequestsBuilding Your Startup - Postman API Requests

Dan inilah hasil yang terlihat:

Building Your Startup - Postman API ResultsBuilding Your Startup - Postman API ResultsBuilding Your Startup - Postman API Results

Building Your Startup - Postman API ResultsItu hanya cara mudah untuk menelusuri hasil mentah dari server pengembangan saya yang menunjukkan semua pertemuan saya:

Itu saja untuk sekarang. Anda dapat menelusuri rilis di pohon API dan melihat banyak metode lainnya. Saat saya meningkatkan keamanan dan meningkatkan fungsionalitas API, saya akan mencoba menulis lebih banyak tentang itu.

Melihat ke Depan

Saya harap Anda menikmati tutorial hari ini. Jelas, API akan tumbuh dan berubah seiring perkembangan mobile kami. Seperti yang saya katakan sebelumnya, saya akan meningkatkan keamanan dan memperluas fungsi.

Sekali lagi, jika Anda belum, jadwalkan pertemuan pertama Anda dengan Meeting Planner sekarang!

Anda juga dapat menghubungi saya @lookahead_io. Saya selalu terbuka untuk ide-ide fitur baru dan saran topik untuk tutorial selanjutnya. Atau coba helpdesk kami dan buka laporan bug atau tiket permintaan fitur.

Ikuti terus semua ini dan lebih banyak lagi tutorial yang akan datang dengan melihat serial Membangun Startup Anda dengan PHP.

Tautan Terkait

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.