minstudio

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);
});
JSON 응답 최적화와 상태 코드 관리 | Minstudio