Cara Membuat REST API di Laravel #5 : Update Data ke Database


Cara Membuat REST API di Laravel #5 : Update Data ke Database

Cara Membuat REST API di Laravel #5 : Update Data ke Database - Halo teman-teman semuanya, di artikel sebelumnya kita sudah berhasil menampilkan data berdasarkan ID dengan REST API di Framework Laravel.

Pada artikel kali ini kita semua akan belajar bagaimana cara meng-update data ke database dengan REST API di Framework Laravel.

Langsung saja kita mulai, silahkan teman-teman buka file PostsController.php di dalam folder app/Http/Controllers/api/v1 dan silahkan ubah kodenyanya 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);
        }
    }

    /**
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function update(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::whereId($request->input('id'))->update([
                'title'     => $request->input('title'),
                'content'   => $request->input('content'),
            ]);

            if ($post) {
                return response()->json([
                    'success' => true,
                    'message' => 'Post Berhasil Diupdate!',
                ], 200);
            } else {
                return response()->json([
                    'success' => false,
                    'message' => 'Post Gagal Diupdate!',
                ], 401);
            }

        }

    }
}

Jika kita perhatikan dari kode diatas, kita sudah berhasil menambahkan satu fungsi baru dengan nama update, fungsi ini kita gunakan untuk mengupdate data ke database berdasarkan ID.

Sekarang silahkahkan teman-teman buka file api.php di dalam folder routes, dan silahkan tambahkan kode dibawah ini :

Route::post('/v1/posts/update', 'api\v1\PostsController@update');

Sekarang teman-teman bisa mencobanya langsung dengan Postman, silahkan masukkan http://localhost:8000/posts/update pada bagian URL dan jangan lupa menggunakan method POST.

Sebelum kita klik Send, silahkan klik tab body pada Postman dan pilih form-data, dan tambahkan key dengan nama id, title dan body beserta valunya.

Misalkan disini kita akan meng-update dengan ID 1, maka kurang lebih seperti gambar berikut ini :


Jika berhasil, teman-teman akan melihat response dengan format JSON seperti berikut ini :

{
    "success": true,
    "message": "Post Berhasil Diupdate!"
}

Sampai disini pembahasan tentangmeng-update data ke database, di artikel selanjutnya kita semua akan belajar tentang bagaimana cara menghapus data dari database dengan REST API.

Terima Kasih


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami