Tutorial ini melanjutkan artikel sebelumnya yaitu "Menggunkan Database dii Lumen Micro Framework #05". sebelum lanjut di artikel ini silahkan baca terlebih dahulu artikel tersebut agar praktikum di artikel bisa dijalankan.
Di artikel ini kita akan membuat service menggunakan PHP Lumen yang bisa melakukan aksi CRUD (Create, Read, Update, Delete) berdasarkan pada Restful API Design.
Berikut poin-poin utama yang akan kita kerjakan, sebagai berikut :
- Mampu implementasi Restful API
- Memahami HTTP Verbs
- Mampu membuat function CRUD (Create, Read, Update, Delete)
Dibawah ini adalah Endpoint yang akan implementasikan berdasarkan Restful API Design:
Method (HTTP Verbs) |
Endpoint |
Deskripsi |
GET |
/posts |
Melihat semua daftar post |
GET |
/post/{postId} |
Memfilter post yang ditentukan menggunakan id |
POST |
/posts |
Membuat post baru |
PUT |
/post/{postId} |
Update atau edit satu post sesui id |
DELETE |
/post/{postId} |
Menghapus post satu post sesuai id |
Buka file
web.php pada folder routes dan tambahkan script dibawah routes method index
yang telah dibuat sebelumnya seperti berikut.
Kemudian
buka file PostController.php, dan tambahkan method baru bernama function store
(line 21-287) yang berfungsi untuk update atau edit post.
1.
<?php
2.
3.
namespace App\Http\Controllers;
4.
5.
use App\Models\Post;
6.
use Illuminate\Http\Request;
7.
8.
class PostsController extends Controller
9.
{
10. public function index()
11. {
12. $posts = Post::OrderBy("id", "DESC")->paginate(10);
13.
14. $outPut = [
15. "message" => "posts",
16. "results" => $posts
17. ];
18.
19. return response()->json($posts, 200);
20. }
21. public function store(Request $request)
22. {
23. $input = $request->all();
24. $post = Post::create($input);
25.
26. return response()->json($post, 200);
27. }
28. }
Buka
file pada direktori app/Models/ denga nama Post.php dan tambahkan code ini
untuk untuk melakukan update field created_at dan updated_at secara otomatis.
1.
<?php
2.
3.
namespace App\Models;
4.
use Illuminate\Database\Eloquent\Model;
5.
6.
class Post extends Model
7.
{
8.
// define coloum name
9.
protected $fillable = array ('title', 'category', 'description', 'status','user_id');
10.
11. // untuk melakukan update field created_At dan update_up secara otomatis
12. public $timestamps = true;
13. }
Lakukan
testing menggunakan aplikasi postman. Pada sebelah kiri URL kita ganti terlebih
dahulu method HTTP yang awalnya ‘GET’ diganti menggunakan method ‘POST’ karena
kali ini akan mengirimkan data.
Untuk mengirimkan sebuah data, kita harus masuk ke tab body lalu pilih form data yang dimana form data ini adalah pasangan antara key dan value sesuai dengan database yanh telah kita buat.
Jika berhasil, respon akan berupa data yang kita masukkan.
Untuk menampilkan semua data, kita bisa kembali menggunakan method ‘GET’ seperti berikut.
Untuk
dapa melihat post secara detail atau melihat post sesuai id post yang
diinginkan dari setiap data, Anda dapat
mengikuti langkah-langkah berikut.
Tambahkan routes untuk read detail pada file routes.php.
Buka File PostController, dan tambahkan script function show
yang berfungsi untuk melihat post sesuai
id post, berikut adalah script nya.
1.
public function show($id)
2.
{
3.
$post = Post::find($id);
4.
5.
if(!$post) {
6.
abort(404);
7.
}
8.
9.
return response()->json($post, 200);
10. }
Pada fungsi
read detail ini, kita harus mengirimkan sebuah parameter menggunakan post id.
Lakukan test kembali menggunakan postman dengan menambahkan parameter berupa post
id.
Read detail dengan endpoint post yang memiliki id 1, http://localhost:8000/post/1.
Untuk
menerapkan fungsi update, agar dapat edit post. Anda dapat mengikuti
langkah-langkah berikut.
Tambahkan routes untuk read detail pada file routes.php
Buka file PostsController.php dan tambahkan script function
update yang berfungsi untuk edit post, berikut adalah scriptnya.
1.
public function update(Request $request, $id)
2.
{
3.
$input = $request->all();
4.
5.
$post = Post::find($id);
6.
7.
if(!$post) {
8.
abort(404);
9.
}
10.
11. $post->fill($input);
12. $post->save();
13.
14. return response()->json($post, 200);
15. }
Selanjutnya buka postman untuk melakukan test. Ubah method
HTTP menjadi ‘PUT’.
Masukkan URL yang telah kita buat beserta parameter id yang
akan diubah, kemudian, masuk ke tab x-www-form-urlencoded. Ketikkan key dan
value yang ingin kita update.
Jika berhasil maka respon akan seperti berikut.
Tambahkan
kembali routing untuk melakukan fungsi delete, seperti biasa disertai dengan
parameter id yang akan kita delete.
Kemudian buka file PostsController.php
dan tambahkan function destroy yang berfungsi untuk menghapus post sesuai id
post , berikut adalah script nya.
1.
public function destroy($id)
2.
{
3.
$post = Post::find($id);
4.
5.
if(!$post) {
6.
abort(404);
7.
}
8.
$post->delete();
9.
$message = ['message' => 'deleted successfully', 'post_id' => $id];
10.
11. return response()->json($message, 200);
12. }
Untuk melakukan test di postman
seperti biasa kita ubah terlebih dahulu method HTTP nya, kali ini menjadi ‘DELETE’.
Lalu masukkan URL nya beserta
parameter id yang akan di delete. Disini penulis mencoba untuk menghapus post
yang memiliki id dengan endpoint sebagai
berikut http://localhost:8000/post/2 Jika berhasil maka respon akan seperti
berikut.
Sampai
disini anda telah berhasil mencoba terkait implementasi RESTful API dengan method
‘POST’, ‘PUT, dan ‘DELETE’.
0 komentar:
Posting Komentar