프로그래밍/웹 관련

[PHP] CodeIgniter를 이용하여 REST API 구현하기

채윤아빠 2019. 4. 24. 13:03
728x90
반응형

CodeIgniter 다운로드 및 REST API 개발 환경 설정

http://www.codeigniter.org 에서 최신 CodeIgniter 소스를 다운로드 받습니다. (문서 작성시점의 CodeIgniter는 3.1.10이 가장 최신버전이었습니다.)

개발하고자 하는 REST API 프로젝트 폴더에 "v1.0" 폴더에 다운로드 받은 소스를 모두 풀어줍니다.

API 운영에 불필요한 다음 폴더 및 파일들은 삭제합니다.

  • user_guide\
  • license.txt
  • readme.rst

"CodeIgniter" 폴더에 ".htaccess" 파일을 다음과 같이 작성합니다.


    RewriteEngine On
    RewriteBase /dapi/v1.0
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt)

브라우저로 설정한 경로로 호출이 성공하면 다음과 같은 화면이 나타납니다.

 

 

REST Library 다운로드 및 CodeIgniter 적용하기

CodeIgniter Rest Server 에서 소스를 다운로드 받아서, 다음 파일들을 앞서 준비한 CodeIgniter 폴더에 압축을 풀어 줍니다.

압축을 해제해 줘야할 파일들은 다음과 같습니다.

  • application\config\rest.php
  • language\english\rest_controller_lang.php
  • language\korean\rest_controller_lang.php
  • libraries\Format.php
  • libraries\REST_Controller.php

위 파일들을 CodeIgniter에 적용하면 기본적인 REST API 개발의 준비가 완료된 상태입니다.

 

 

REST API 작성하기

"CodeIgniter Rest Server" github 소스에 포함된 예제를 분석한 이후에, REST API 작성하면 많은 도움이 됩니다.

앞서 설치한 codeigniter-restserver를 이용하기 위해서는 클래스 소스 상단에 다음과 같은 선언을 추가해 줍니다.

use Restserver\Libraries\REST_Controller;
defined('BASEPATH') OR exit('No direct script access allowed');

require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';

기본적으로 REST API를 작성하기 위해서는 "REST_Controller" 클래스를 상속받아 신규 클래스를 작성합니다.

그리고, CRUD 동작을 위하여 index_post(), index_get(), index_put(), index_delete() 함수들을 구현합니다.

 

class Target extends REST_Controller {

    function __construct()
    {
        // Construct the parent class
        parent::__construct();
    }

    public function index_get()
    {
        // ....
    }

    public function index_post()
    {
        // ....
    }

    public function index_put()
    {
        // ....
    }

    public function index_delete()
    {
        // ....
    }
}

 

각 index_xxx() 함수들의 파라미터는 호출되는 REST API의 파라미터 순서와 동일합니다.

예를 들어, "http://localhost/dapi/v1.0/my_api/one/two/three"라고 REST API를 호출하면, "one"은 첫 번째 파라미터에, "two"는 두 번째 파라미터에 "three"는 세 번째 파라미터에 입력되게 됩니다.

파라미터의 입력없이도 호출이 가능하도록 하려면, 각 메소드의 파라미터에 기본값으로 "null"을 할당합니다.

    public function index_get($one = null, $two = null, $three = null)
    {
        // ....
    }  

 

 

참고자료