JSON 응답 최적화와 상태 코드 관리
API를 만들 때는 데이터를 항상 규격에 맞는 JSON 포맷으로 응답해야 하며, 클라이언트가 결과를 즉시 파악할 수 있도록 올바른 HTTP 상태 코드(Status Code)를 내려주는 것이 핵심입니다.
🚦 HTTP 상태 코드 신호등
200번대
성공 (OK)
201 (생성됨)
400번대
클라이언트 에러
401(권한없음)
500번대
서버 에러
500(DB다운 등)
// 매번 json_encode() 와 withHeader() 를 호출하기 귀찮으므로,
// BaseController나 헬퍼 함수를 만들어 사용하면 매우 깔끔해집니다.
function jsonResponse(Response $response, $data, int $status = 200) {
// 배열이나 객체를 JSON 문자열로 변환
$payload = json_encode([
'status' => $status,
'data' => $data
]);
$response->getBody()->write($payload);
// 상태 코드와 헤더를 한 번에 적용해서 반환
return $response
->withHeader('Content-Type', 'application/json')
->withStatus($status);
}
// 라우트에서의 사용 예시
$app->get('/profile', function ($request, $response) {
$user = ['id' => 1, 'name' => '민수'];
// 코드가 훨씬 간결해집니다!
return jsonResponse($response, $user, 200);
});