# Laravel Enums API Response ###### tags: `PHP` `Laravel` ## Base Enum #### Request validation ```php= enum ResponseEnum: int { case SUCCESS = 200; case NO_CONTENT = 204; case MOVE_PERMANENTLY = 301; case FOUND = 302; case UNAUTHORIZED = 401; case FORBIDDEN = 403; case NOT_FOUND = 404; case METHOD_NOT_ALLOWED = 405; case NOT_ACCEPTABLE = 406; case CONFLICT = 409; case CONTENT_TOO_LONG = 413; case UNPROCESSABLE_ENTITY = 422; case TOO_MANY_REQUESTS = 429; case SERVER_ERROR = 500; /** * API Exception * @param string|int|null $code * @param string|null $msg * @return JsonResponse */ public static function exception(string|int $code = null, ?string $msg = null): JsonResponse { return match ((int)$code) { 204 => self::NO_CONTENT->toJson($msg), 301 => self::MOVE_PERMANENTLY->toJson($msg), 302 => self::FOUND->toJson($msg), 401 => self::UNAUTHORIZED->toJson($msg), 403 => self::FORBIDDEN->toJson($msg), 404 => self::NOT_FOUND->toJson($msg), 405 => self::METHOD_NOT_ALLOWED->toJson($msg), 406 => self::NOT_ACCEPTABLE->toJson($msg), 409 => self::CONFLICT->toJson($msg), 422 => self::UNPROCESSABLE_ENTITY->toJson($msg), 429 => self::TOO_MANY_REQUESTS->toJson($msg), default => self::SERVER_ERROR->toJson($msg), }; } /** * API 回傳 * @param string|null $msg * @param $data * @return JsonResponse */ public function toJson(?string $msg = null, $data = null): JsonResponse { return response()->json([ 'status' => $this->value, 'data' => $data, 'msg' => $this->value >= 500 && !config('app.debug') ? 'Server Error' : $msg ]); } /** * Test 回傳 * * @param string|null $msg * @param null $data * @return array */ public function toArray(?string $msg = null, $data = null): array { return [ 'status' => $this->value, 'data' => $data, 'msg' => $this->value >= 500 && !config('app.debug') ? 'Server Error' : $msg ]; } } ``` ### API Usage ```php= try { return Response::SUCCESS->toJson('message', $data); } catch (Exception $e) { return Response::exception($e->getCode(), $e->getMessage()); } ```