Tutorial REST API di Laravel #5 : Update Data ke Database

Pada tutorial sebelumnya kita sudah berhasil menampilkan data berdasarkan ID dengan REST API di Framework Laravel. Pada tutorial ini kita akan belajar bagaimana cara meng-update data ke database dengan REST API di Framework Laravel.

Silahkan buka file PostsController.php di dalam folder app/Http/Controllers/api/v1 dan tambahkan 1 fungsi dengan nama update() seperti berikut ini :

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()
            ],
            
        );
    } 
    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
            );
        }
    }
}

Sehingga kode lengkapnya menjadi seperti berikut ini :

<?php

namespace App\Http\Controllers\api\v1;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Models\Post;
use Illuminate\Support\Facades\Validator;


class PostsController extends Controller
{

    /**
     * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
     */

    /**
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */

    
    public function index()
    {
        $posts = Post::latest()->get();
        return response(
            [
                'success' => true,
                'message' => 'List Semua Posts',
                'data' => $posts
            ], 
        200);
    }

    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
            );
        }
    }


    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()
                ],
                
            );
        } 
        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
                );
            }
        }
    }

    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
                );
            }
        }
    }
}

 

Baca Juga  Tutorial Laravel #3 : Membuat Controller

Pada sintak di atas kita sudah menambahkan satu fungsi baru dengan nama update(), fungsi ini kita gunakan untuk mengupdate data ke database berdasarkan ID.

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

Route::post('/v1/posts/update', [App\Http\Controllers\api\v1\PostsController::class, 'update']);

 

Sekarang kita bisa mencobanya langsung dengan Postman, silahkan masukkan http://localhost:8000/api/v1/posts/update pada bagian URL dan jangan lupa menggunakan method POST, maka maka akan menemukan sebuah pesan validasi error berupa format JSON seperti berikut ini :

{
    "success": false,
    "message": "Silahkan Isi Bidang Yang Kosong",
    "data": {
        "title": [
            "Masukkan Title Post !"
        ],
        "content": [
            "Masukkan Content Post !"
        ]
    }
}

Seperti pada gambar berikut ini :

Hal ini karena kita belum menambahkan form-data dengan kolom title dan content, silahkan klik tab body pada Postman dan pilih form-data, dan tambahkan key dengan nama title, body dan id nya beserta valuenya (misal kita akan meng-update data dengan ID 1).

Jika sudah kita bisa klik Send lagi, jika berhasil kita kan mendapatkan format JSON sepertiti berikut ini :

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

Hasilnya seperti gambar berikut ini :

Kita cek juga ke table posts yang ada pada databse db_laravel_api, jika berhasil maka datanya juga akan berhasil diupdate seperti gambar berikut ini :

Demikian tutorial tentang cara meng-update data ke database menggunakan REST API pada Laravel. Pada totorial selanjutnya kita akan belajar tentang cara menghapus data dari database dengan REST API.

Jika ada pertanyaan silahkan tuliskan di kolom komentar, semoga bermanfaat.

Related Post

Be the first to comment

Leave a Reply

Your email address will not be published.


*


error: Ga bisa dicopy