✨ 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
|
public function toResponse($data = null, ?string $message = null): array
|
||||||
{
|
{
|
||||||
return [
|
$response = [
|
||||||
|
'status' => $this->value == '00' ? true : false,
|
||||||
'response_code' => $this->value,
|
'response_code' => $this->value,
|
||||||
'response_message' => $message ?? $this->getMessage(),
|
'response_message' => $message ?? $this->getMessage(),
|
||||||
'response_description' => $this->getDescription(),
|
'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)
|
protected function failedValidation($validator)
|
||||||
{
|
{
|
||||||
$errors = $validator->errors();
|
$errors = $validator->errors();
|
||||||
$firstError = $errors->first();
|
|
||||||
|
|
||||||
throw new \Illuminate\Http\Exceptions\HttpResponseException(
|
throw new \Illuminate\Http\Exceptions\HttpResponseException(
|
||||||
response()->json(
|
response()->json(
|
||||||
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->toResponse(
|
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->toResponse(
|
||||||
null,
|
['errors' => $errors->all()],
|
||||||
$firstError
|
'Field tertentu tidak sesuai aturan'
|
||||||
),
|
),
|
||||||
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->getHttpStatus()
|
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->getHttpStatus()
|
||||||
)
|
)
|
||||||
@@ -107,4 +106,4 @@ class BalanceSummaryRequest extends FormRequest
|
|||||||
'user_agent' => $this->userAgent()
|
'user_agent' => $this->userAgent()
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user