-
Notifications
You must be signed in to change notification settings - Fork 2
External API
goose-api에서 사용되는 API가 좀 부족하거나 커스텀화하여 최적화하고 싶을때 API를 확장할 수 있습니다.
최대한 기본적으로 만들어진 API를 사용하는것이 좋지만 기본 API로는 도저히 데이터를 가져오기 힘들다면 사용하는것을 권장합니다.
확장 API 파일들이 들어가는 경로는 /controller/external 입니다.
파일이 아무것도 없기 때문에 external 디렉토리가 없는것을 볼 수 있는데 먼저 /controller/external 경로로 디렉토리를 만들고 파일을 만들어 넣습니다.
먼저 확장할 기능을 담고있는 컨트롤러 파일을 만들어야 합니다.
/controller/external 경로에 파일을 만들고 파일 이름을 기반하여 API 메서드와 주소로 사용됩니다.
파일 이름은 {METHOD}_{ADDRESS-NAME}.php 형식으로 만듭니다.
예를들어 get_foo.php으로 파일을 만들었다면 /external/foo 주소로 GET 형식으로 요청할 수 있습니다.
POST 형식의 컨트롤러 파일을 만든다면 파일 이름이 post_foo.php으로 만들면 됩니다.
소스를 작성하는 방식들은 다른 컨트롤러의 파일들을 열어서 어떻게 동작하는지 파악하는것이 중요합니다.
RestAPI로 출력되는 타입은 JSON이기 때문에 결과물을 출력할때는 Object 형식으로 출력할 데이터를 만들어서 Output::data($output); 형식으로 출력해주세요.
무언가 오류가 났을때에는 Error::data('error message', 500); 형식으로 메서드 사용을 하여 간단하게 오류를 출력해주세요.
간단하게 헬로월드를 출력하는 코드는 다음과 같습니다.
<?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"
}데이터베이스에 접근하는 도구나 토큰을 이용하여 인증하는것들이 기본 컨트롤러에서 사용되고 있으니 만들어져 있는 컨트롤러의 소스코드를 참고하여 작성해주세요.