Skip to content

External API

Redgoose edited this page Jan 29, 2019 · 1 revision

goose-api에서 사용되는 API가 좀 부족하거나 커스텀화하여 최적화하고 싶을때 API를 확장할 수 있습니다.
최대한 기본적으로 만들어진 API를 사용하는것이 좋지만 기본 API로는 도저히 데이터를 가져오기 힘들다면 사용하는것을 권장합니다.

확장 API 파일들이 들어가는 경로는 /controller/external 입니다.
파일이 아무것도 없기 때문에 external 디렉토리가 없는것을 볼 수 있는데 먼저 /controller/external 경로로 디렉토리를 만들고 파일을 만들어 넣습니다.

Create external API file

먼저 확장할 기능을 담고있는 컨트롤러 파일을 만들어야 합니다.
/controller/external 경로에 파일을 만들고 파일 이름을 기반하여 API 메서드와 주소로 사용됩니다.

파일 이름은 {METHOD}_{ADDRESS-NAME}.php 형식으로 만듭니다.
예를들어 get_foo.php으로 파일을 만들었다면 /external/foo 주소로 GET 형식으로 요청할 수 있습니다.

POST 형식의 컨트롤러 파일을 만든다면 파일 이름이 post_foo.php으로 만들면 됩니다.

Source code

소스를 작성하는 방식들은 다른 컨트롤러의 파일들을 열어서 어떻게 동작하는지 파악하는것이 중요합니다.
RestAPI로 출력되는 타입은 JSON이기 때문에 결과물을 출력할때는 Object 형식으로 출력할 데이터를 만들어서 Output::data($output); 형식으로 출력해주세요.
무언가 오류가 났을때에는 Error::data('error message', 500); 형식으로 메서드 사용을 하여 간단하게 오류를 출력해주세요.

간단하게 헬로월드를 출력하는 코드는 다음과 같습니다.

get_helloworld.php

<?php
namespace Core;
use Exception;

if (!defined('__GOOSE__')) exit();

try {
  // 이 조건문이 true라면 오류가 납니다.
  if (false) {
    throw new Exception('error message', 500);
  }

  Output::data((object)[
    'code' => 200,
    'data' => 'hello world'
  ];);

} catch(Exception $e) {
    Error::data($e->getMessage(), $e->getCode());
}

파일을 만들고 브라우저나 API로 http://api-address/external/helloworld 주소로 접속해보면 다음과 같은 결과값을 볼 수 있습니다. (다른 값들이 더 있을 수 있습니다.)

{
  "code": "200",
  "data": "hello world"
}

데이터베이스에 접근하는 도구나 토큰을 이용하여 인증하는것들이 기본 컨트롤러에서 사용되고 있으니 만들어져 있는 컨트롤러의 소스코드를 참고하여 작성해주세요.

Clone this wiki locally