Pada Slim4 tutorial API Validasi request akan dibahas bagaimana melakukan pengecekan validasi terhadap request yang masuk. Hal ini merupakan proses yang cukup penting untuk dilakukan demi meningkatkan keamanan dari sistem. Validasi merupakan salah satu bentuk pengecekan request yang berasal dari pengguna. Validasi request perlu dilakukan untuk meminimalisir terjadinya kesalahan, bad data, atau bahkan SQL injection pada database. Beberapa hal yang bisa dilakukan pada proses validasi seperti memastikan penulisan alamat email benar, input hanya berupa angka, alfanumerik, dan lain sebagainya.
PHP Slim4 Tutorial API: 2 Validasi request dengan cakephp/validation
Metode yang bisa digunakan untuk melakukan validasi terhadap request yaitu menulis manual validasi untuk melakukan pengecekan satu persatu dan menggunakan package yang sudah ada. Pada tutorial API validasi request ini, pengecekan request akan dilakukan dengan menggunakan package yang sudah ada. Salah satu package validasi yang bisa digunakan pada Slim4 adalah cakephp/validation. Instalasi dan implementasi cakephp/validation cukup sederhana. Instalasi bisa dilakukan dengan menggunakan perintah composer:
composer require cakephp/validation
Implementasi validasi bisa diterapkan pada route. Saat request datang, maka sistem akan melakukan pengecekan terhadap request yang masuk. Atau sebelum data dari request diproses oleh sistem, terlebih dahulu dilakukan proses validasi. Selanjutnya, sistem akan melanjutkan ke proses berikutnya. Ketika pengecekan request gagal maka sistem akan memberikan peringatan pada klien. Fitur cakephp/validation yang bisa digunakan untuk proses validasi adalah class Validator. Penggunaan Validator sebagai berikut:
$validator = new Validator();
$validator->requirePresence('email', true, 'Email is required')
->notEmptyString('email', 'Email field is required')
->email('email', false, 'Email must be valid')
->requirePresence('password', true, 'Password field is required')
->notEmptyString('password', 'Password is required')
->requirePresence('name', true, 'Name field is required')
->notEmptyString('name', 'Name is required');
Menyimpan data dengan model User
Setelah proses pengecekan request valid, selanjutnya data akan disimpan pada database. Proses penyimpanan data request pada database bisa dilakukan dengan menggunakan model User. Cara pembuatan model ada pada tutorial Slim4 Database Eloquent tanpa Laravel. Code penggunaan validasi request / pengecekan request dan cara menyimpan data pengguna dengan model User sebagai berikut:
// other code
use Cake\Validation\Validator;
use App\Models\User;
// other code
$app->post('/register', function (Request $request, Response $response, $args) {
$body = $request->getBody();
$json = json_decode($body, true);
$validator = new Validator();
$user = new User();
$validator->requirePresence('email', true, 'Email is required')
->notEmptyString('email', 'Email field is required')
->email('email', false, 'Email must be valid')
->requirePresence('password', true, 'Password field is required')
->notEmptyString('password', 'Password is required')
->requirePresence('name', true, 'Name field is required')
->notEmptyString('name', 'Name is required');
$errors = $validator->validate($json);
if ($errors) {
$messages['message'] = 'Register failed';
foreach($errors as $error) {
$messages['error'][] = array_values($error);
}
$statusCode = 400;
} else {
try {
$messages['message'] = 'Register successfully';
$statusCode = 201;
$user->email = $json['email'];
$user->password = sha1($json['password']);
$user->name = $json['name'];
$user->level = 0; // ex: default level for user
$user->status = 1; // ex: default status for active user
$user->save();
} catch (\Exception $e) {
$messages = [
'message' => 'Register failed',
'error' => $e->getMessage(),
];
$statusCode = 400;
}
}
$message = json_encode($messages);
$response->getBody()->write($message);
return $response->withHeader('Content-Type', 'application/json')
->withStatus($statusCode);
});
// other code
$app->run();
Untuk bisa melakukan uji coba pada aplikasi Postman, bisa menggunakan contoh data json user sebagai request sebagai berikut:
{
"email": "user@perangkatlunakku.com",
"password": "12345",
"name": "User"
}
Register user dengan menggunakan Postman:
Code lengkap dapat dilihat melalui Github.
Pingback: Slim4 Fashion Store API: 3 Login user dan JWT access token – PerangkatLunakKu
Pingback: Slim4 Tutorial API: 3 JWT access token - PerangkatLunakKu
Pingback: Tutorial PHP Backend Slim4 - PerangkatLunakKu