Cara Membuat REST API di Laravel #4 : Menampilkan Data Berdasarkan ID - Halo teman-teman semuanya, di artikel sebelumnya kita sudah berhasil menampilkan data dari database dengan REST API dalam format JSON.
Pada artikel kali ini kita semua akan belajar bagaimana cara menampilkan data berdasarkan ID, atau detail data berdasarkan ID.
langsung saja kita mulai, silahkan teman-teman buka PostsController.php
di dalam folder app/Http/Controllers/api/v1, silahkan teman-teman ubah kodenya menjadi seperti berikut ini :
<?php
namespace App\Http\Controllers\api\v1;
use App\Http\Controllers\Controller;
use App\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class PostsController extends Controller
{
/**
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function index()
{
$posts = Post::latest()->get();
return response([
'success' => true,
'message' => 'List Semua Posts',
'data' => $posts
], 200);
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function store(Request $request)
{
//validate data
$validator = Validator::make($request->all(), [
'title' => 'required',
'content' => 'required',
],
[
'title.required' => 'Masukkan Title Post !',
'content.required' => 'Masukkan Content Post !',
]
);
if($validator->fails()) {
return response()->json([
'success' => false,
'message' => 'Silahkan Isi Bidang Yang Kosong',
'data' => $validator->errors()
],401);
} else {
$post = Post::create([
'title' => $request->input('title'),
'content' => $request->input('content')
]);
if ($post) {
return response()->json([
'success' => true,
'message' => 'Post Berhasil Disimpan!',
], 200);
} else {
return response()->json([
'success' => false,
'message' => 'Post Gagal Disimpan!',
], 401);
}
}
}
/**
* @param $id
* @return \Illuminate\Http\JsonResponse
*/
public function show($id)
{
$post = Post::whereId($id)->first();
if ($post) {
return response()->json([
'success' => true,
'message' => 'Detail Post!',
'data' => $post
], 200);
} else {
return response()->json([
'success' => false,
'message' => 'Post Tidak Ditemukan!',
'data' => ''
], 401);
}
}
}
Dari kode diatas jika kita perhatikan, kita sudah berhasil menambahkan sebuah fungsi baru
dengan nama show
, fungsi ini digunakan untuk menampilkan data berdasarkan ID.
Selanjutnya, silahkan teman-teman buka file api.php
di dalam folder routes, dan silahkan tambahkan kode dibawah ini :
Route::get('/v1/posts/{id?}', 'api\v1\PostsController@show');
Sekarang teman-teman bisa mencobanya langsung dengan Postman, silahkan masukkan http://localhost:8000/posts/1 pada bagian URL dan jangan lupa menggunakan method GET
.
Dari URL diatas, kita mencoba menampilkan data berdasarkan ID 1
Jika berhasil, teman-teman akan melihat response dengan format JSON kurang lebih seperti berikut ini :
{
"success": true,
"message": "Detail Post!",
"data": {
"id": 1,
"title": "Test Post 1",
"content": "Test Content Post 1",
"created_at": "2020-02-02 03:46:51",
"updated_at": "2020-02-02 03:46:51"
}
}
Atau kurang lebih seperti gambar dibawah ini :
Sampai disini pembahasan tentang menampilkan data berdasarkan ID, di artikel selanjutnya kita semua akan belajar tentang bagaimana cara meng-update data ke database dengan REST API.
Terima Kasih