코드이그나이터4 컨트롤러 다루기 - 7 - JSON 응답하기

고은연·2021년 3월 10일
0

이번 챕터의 소스 코드는 https://github.com/koeunyeon/ci4/tree/json_response 에서 보실 수 있습니다.

JSON 응답하기

현대의 웹 서버는 HTML만 보여주지 않습니다. JSON도 보여주고, XML도 보여주고, 여튼 여러가지 데이터 형식을 보여줍니다.
특히 2000년대 중반 이후 Ajax가 부상하면서 JSON 형식은 필수가 되었죠. 이번 챕터에서는 코드이그나이터에서 JSON 응답을 다루는 방법을 알아보겠습니다.

Sample 컨트롤러에 아래의 메소드를 추가합니다.
/app/Controllers/Sample.php

public function json_response(): \CodeIgniter\HTTP\Response // (1) (2)
{
    $data = [ // (3)
        'name' => "ci4",
        'type' => "json",
        'age' => "20"
    ];

    $response = $this->response->setJSON($data); // (4)
    return $response; // (5)
}

(1) json 응답을 테스트하는 엔드포인트 json_reponse를 만듭니다.

(2) 리턴 타입이 \CodeIgniter\HTTP\Response임을 알 수 있습니다. Response 객체는 HTTP 응답을 래핑해놓은 코드이그나이터4의 객체입니다. Response객체에 응답 코드, 응답 본문 뿐만 아니라 컨텐트 타입 등도 설정한 후 클라이언트에 보내는 응답을 만들어냅니다. 대부분의 경우 코드이그나이터가 알아서 설정하므로 필요한 항목만 설정하면 됩니다.

(3) JSON 응답을 테스트하기 위해 임의의 연관배열을 만듭니다.

(4) 컨트롤러는 응답 객체를 멤버 변수로 내장하고 있습니다. 따라서 멤버 변수 $this->response에 JSON을 설정한다고 정의함으로써(setJSON($data)) JSON 형식으로 응답한다는 것을 설정합니다.

(5) Response 객체를 리턴합니다.


JSON 형식이 클라이언트에 잘 전달되는지 확인해 보겠습니다.
웹 브라우저에서 F12를 눌러 개발자 도구를 켜고 네트워크 탭으로 이동합니다.

네트워크 탭 이동

http://localhost:8080/sample/json_response에 접속해 봅니다.
개발자 도구의 http://localhost:8080/sample/json_response 항목을 클릭합니다.

응답 페이로드를 확인해 보겠습니다.

응답 페이로드

PHP 객체가 JSON 타입으로 잘 변경되었음을 확인할 수 있습니다.

{
    "name": "ci4",
    "type": "json",
    "age": "20"
}

응답 헤더를 보면 Content-Type: application/json; charset=UTF-8 를 확인할 수 있습니다. 코드이그나이터4에서 setJSON 메소드가 호출되면 자동으로 컨텐트 타입을 설정해준다는 점을 확인할 수 있습니다.

응답 헤더

profile
중년 아저씨. 본명 아님. 10 + n년차 백엔드 개발자. 스타트업과 창업, 솔로프리너와 1인 기업에 관심 많아요.

0개의 댓글