✨ feat(response): Restrukturisasi format response untuk validasi error dan response sukses
- Menambahkan logika baru di `ResponseCode` untuk memisahkan struktur response sukses dan error. - Field `errors` sekarang berada di root level untuk response validasi error. - Meta response error lebih ringkas, hanya menyertakan `generated_at` dan `request_id`. - Pesan error menampilkan seluruh daftar error, bukan hanya error pertama. - Konsistensi format response memudahkan integrasi dengan frontend. - Field `account_number` dan `period` dihapus dari meta pada response error. - Memberikan request_id otomatis pada setiap response untuk keperluan tracking. - Semua endpoint yang menggunakan ResponseCode enum otomatis mengikuti format baru.
This commit is contained in:
@@ -118,20 +118,24 @@
|
||||
*/
|
||||
public function toResponse($data = null, ?string $message = null): array
|
||||
{
|
||||
return [
|
||||
$response = [
|
||||
'status' => $this->value == '00' ? true : false,
|
||||
'response_code' => $this->value,
|
||||
'response_message' => $message ?? $this->getMessage(),
|
||||
'response_description' => $this->getDescription(),
|
||||
'data' => $data,
|
||||
'meta' => [
|
||||
'account_number' => $data['account_number'] ?? null,
|
||||
'period' => [
|
||||
'start_date' => $data['period']['start_date'] ?? null,
|
||||
'end_date' => $data['period']['end_date'] ?? null,
|
||||
],
|
||||
'generated_at' => now()->toDateTimeString(),
|
||||
'request_id' => request()->header('X-Request-ID', uniqid('req_'))
|
||||
],
|
||||
];
|
||||
|
||||
if (isset($data['errors'])) {
|
||||
$response['errors'] = $data['errors'];
|
||||
} else {
|
||||
$response['data'] = $data;
|
||||
}
|
||||
|
||||
$response['meta'] = [
|
||||
'generated_at' => now()->toDateTimeString(),
|
||||
'request_id' => request()->header('X-Request-ID', uniqid('req_'))
|
||||
];
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,13 +81,12 @@ class BalanceSummaryRequest extends FormRequest
|
||||
protected function failedValidation($validator)
|
||||
{
|
||||
$errors = $validator->errors();
|
||||
$firstError = $errors->first();
|
||||
|
||||
|
||||
throw new \Illuminate\Http\Exceptions\HttpResponseException(
|
||||
response()->json(
|
||||
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->toResponse(
|
||||
null,
|
||||
$firstError
|
||||
['errors' => $errors->all()],
|
||||
'Field tertentu tidak sesuai aturan'
|
||||
),
|
||||
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->getHttpStatus()
|
||||
)
|
||||
@@ -107,4 +106,4 @@ class BalanceSummaryRequest extends FormRequest
|
||||
'user_agent' => $this->userAgent()
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user