Tutorial Laravel JWT #4 : Membuat RESTful API Register


Fika Ridaul Maulayya
Full-Stack Web Developer, Content Creator and CO-Founder SantriKoding.com
Tutorial Laravel JWT #4 : Membuat RESTful API Register

Halo teman-teman semuanya, di artikel sebelumnya kita telah belajar bagaimana cara melakukan installasi dann konfigurasi JWT atau JSON Web Token di dalam Laravel. Sekarang kita akan lanjutkan belajar membuat RESTful API untuk proses register.

Langkah 1 - Membuat Controller Register

Sekarang kita akan belajar membuat controller untuk register. Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.

php artisan make:controller Api/RegisterController -i

Di atas, kita menambahkan flag -i, yang artinya controller tersebut akan kita jadikan sebagai single action controller, atau controller yang hanya memiliki 1 method saja.

Dan jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file baru dengan nama RegisterController.php yang berada di dalam folder app/Http/Controllers/Api.

Silahkan buka file tersebut dan ubah semua kode-nya menjadi seperti berikut ini.

<?php

namespace App\Http\Controllers\Api;

use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;

class RegisterController extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        //set validation
        $validator = Validator::make($request->all(), [
            'name'      => 'required',
            'email'     => 'required|email|unique:users',
            'password'  => 'required|min:8|confirmed'
        ]);

        //if validation fails
        if ($validator->fails()) {
            return response()->json($validator->errors(), 422);
        }

        //create user
        $user = User::create([
            'name'      => $request->name,
            'email'     => $request->email,
            'password'  => bcrypt($request->password)
        ]);

        //return response JSON user is created
        if($user) {
            return response()->json([
                'success' => true,
                'user'    => $user,  
            ], 201);
        }

        //return JSON process insert failed 
        return response()->json([
            'success' => false,
        ], 409);
    }
}

Dari penambahan kode di atas, pertama-tama kita import Model User.

use App\Models\User;

Karena kita akan menerapkan validasi, maka kita juga akan melakukan import Facades validator dari Laravel.

use Illuminate\Support\Facades\Validator;

Dan di dalam class RegisterController dan tepatnya pada method __invoke, kita tambahkan rule validasi. Dimana akan digunakan untuk memvalidasi request yang dikirimkan.

 //set validation
 $validator = Validator::make($request->all(), [
     'name'      => 'required',
     'email'     => 'required|email|unique:users',
     'password'  => 'required|min:8|confirmed'
 ]);

Dari penambahan validasi di atas, kurang lebih detailnya seperti berikut ini.

ATTRIBUE VALIDATION DESCRIPTION
name required field/input wajib diisi.
email required field/input wajib diisi.
email field/input harus memili format email.
unique:users field/input bersifat unik di dalam table users.
password required field/input wajib diisi.
min:8 field/input minimal 8 karakter
confirmed field/input harus mempunyai inputan lagi untuk konfirmasi data yang sama.

Jika data yang dikirimkan belum sesuai dengan validasi di atas, maka kita akan return ke dalam format JSON dengan memberikan error validasi dan status code 422.

//if validation fails
if ($validator->fails()) {
    return response()->json($validator->errors(), 422);
}

Tapi, jika data yang dikirimkan sudah sesuai dengan validasi di atas. Maka kita akan lakukan insert data user baru menggunakan Model User.

//create user
$user = User::create([
    'name'      => $request->name,
    'email'     => $request->email,
    'password'  => bcrypt($request->password)
]);

Jika proses insert data di atas berhasil dilakukan, maka kita akan return dengan status code 201 dan berisi informasi data user yang telah diinsert.

//return response JSON user is created
if($user) {
    return response()->json([
        'success' => true,
        'user'    => $user,  
    ], 201);
}

Tapi, jika data user gagal diinsert, maka kita akan return dengan status code 409 dengan informasi success false.

//return JSON process insert failed 
return response()->json([
    'success' => false,
], 409);

Langkah 2 - Menambahkan Route API Register

Setelah berhasil menambahkan controller register, sekarang kita akan menambahkan sebuah route. Silahkan buka file routes/api.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/**
 * route "/register"
 * @method "POST"
 */
Route::post('/register', App\Http\Controllers\Api\RegisterController::class)->name('register');

Di atas, kita menambahkan route baru dengan path /register dan untuk method-nya adalah POST.

Langkah 3 - Uji Coba API Register

Untuk melakukan proses uji coba RESTful API, kita membutuhkan sebuah tools tambahan yang bernama Postman. Silahkan teman-teman bisa mengunduhnya di link berikut ini : https://www.postman.com/downloads/

Sekarang, silahkan aplikasi Postman dan masukkan URL berikut ini http://localhost:8000/api/register dan untuk method-nya silahkan pilih POST.

Jika sudah, silahkan klik Send dan jika berhasil maka kita akan mendapatkan error validasi yang dikirimkan oleh controller. Kurang lebih seperti berikut ini.

Sekarang kita akan uji coba dengan memasukkan data. Silahkan klik tab Body dan pilih form-data, kemudian masukkan key dab value berikut ini.

KEY VALUE
name isi sesuai keinginan.
email isi sesuai keinginan.
password isi sesuai keinginan.
password_confirmation isi sesuai dengan field/kolom password.

Jika sudah, silahkan klik Send, jika berhasil maka kita akan mendapatkan response kurang lebih seperti berikut ini :

{
    "success": true,
    "user": {
        "name": "Fika Ridaul Maulayya",
        "email": "admin@gmail.com",
        "updated_at": "2022-05-18T02:30:18.000000Z",
        "created_at": "2022-05-18T02:30:18.000000Z",
        "id": 1
    }
}

Kurang lebih seperti itu pembahasan bagaimana cara membuat proses register via Rest API. Di artikel selanjutnya kita akan belajar bagaimana cara membuat proses login dengan membuat token JWT.

Terima kasih



Fika Ridaul Maulayya
Full-Stack Web 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