Skip to content

redgoose-dev/php-restapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

restapi

RestAPI interface on PHP

PHP 환경에서 API요청을 할 수 있도록 도와주는 인터페이스 클래스입니다.
이 패키지는 cURL PHP 모듈이 사용되기 때문에 curl모듈이 꼭 설치되어 있어야 합니다.

# php7.4
sudo apt-get install php7.4-curl

Install

다음과 같이 composer를 통하여 패키지를 설치합니다.

composer require redgoose/restapi

composer를 사용하지 않는다면 github에서 소스를 다운로드 후에 /src/RestAPI.php로 사용합니다.

Usage

with composer

require 'vendor/autoload.php';
use redgoose\RestAPI;

$restapi = new RestAPI();

without composer

소스를 다운로드하고 직접 연결할때 사용하는 방법입니다.

require 'src/RestAPI.php';
use redgoose\RestAPI;

$restapi = new RestAPI();

create instance

new 키워드를 통하여 인스턴스 객체를 만들어서 사용할 수 있습니다.

use redgoose\RestAPI;

// example
$restapi = new RestAPI((object)[]);

Options

use redgoose\RestAPI;

$restapi = new RestAPI((object)[
 'url' => 'https://api.address.com',
 'outputType' => 'text',
 'headers' => [],
 'timeout' => 10,
 'debug' => false,
]);

인스턴스 객체를 만들때 사용하는 옵션들입니다.
객체를 만드는 예제소스와 같이 object 타입의 값은 다음과 같습니다.

Name Type Default Description
url string '' url prefix
outputType string 'text' 출력방식 json,text
headers array [] 요청할때 headers값을 사용합니다.
timeout int 10 요청 대기시간(초)
debug boolean false 요청할때 요청 정보값을 받아와서 어떻게 요청하고 있는지 확인할 수 있습니다.

Methods

request

함수 형식으로 접근하여 요청할때 사용합니다.

use redgoose\RestAPI;

$response = RestAPI::request($method, $path, $data, $files, $options);

// example
$response = RestAPI::request('get', 'https://api.domain.com', null, null, (object)[]);

이 메서드는 다음과 같은 인자값을 사용합니다.

Name Type Default Description
$method string 'get' 요청 메서드
$path string '' 요청 URL 주소
$data object,array null mehtod=get: url query string 방식으로 사용하고, 그 외에는 data로 사용됩니다.
$files array null $_FILES 형식의 값
$options object null Options 섹션에서 사용되는 값들과 동일합니다.

call

요청할때 사용하는 메서드입니다.
이 메서드 내부에서 RestAPI::request()함수를 사용하기 때문에 사용법은 Methods/request섹션과 비슷합니다.

use redgoose\RestAPI;

$restapi = new RestAPI((object)[]);
$response = $restapi->call($method, $path, $data, $files);

// example
$response = $restapi->call('get', 'https://api.domain.com', null, null);

이 메서드는 다음과 같은 인자값을 사용합니다.

Name Type Default Description
$method string 'get' 요청 메서드
$path string '' 요청 URL 주소
$data object,array null mehtod=get: url query string 방식으로 사용하고, 그 외에는 data로 사용됩니다.
$files array null $_FILES 형식의 값

update

인스턴스의 값을 업데이트할때 사용 수 있습니다.

use redgoose\RestAPI;

$restapi = new RestAPI();
$restapi->update($options);

이 메서드는 다음과 같은 인자값을 사용합니다.

Name Type Default Description
$options object null Options 섹션에서 사용되는 값들과 동일합니다.

Examples

/tests에서 개발을 위하여 만든 흔적들을 확인할 수 있습니다.

File upload

개발을 위하여 파일 업로드 기능에 관한 샘플 소스를 만들었습니다.

page/upload.php 파일은 업로드하는 폼과 첨부된 파일로 요청하는 부분을 예제로 활용할 수 있습니다.
그리고 api/upload.php 파일을 업로드하고 그 결과를 출력하고 받아올 수 있습니다.

curl은 서로 같은 도메인으로 요청할 수 없기 때문에 테스트용 API 서버서를 하나 더 띄었습니다.
그것은 script.sh 스크립트를 통하여 서로다른 포트로 로컬서버를 띄어서 파일 업로드를 개발하고 테스트하게 되었습니다.

API 서버에서는 $_FILES 형식으로 넘어가면 실질적으로 파일이 업로드가 가능하다는것을 알게되어 값을 넘겨주기 위한 갑 처리가 좀 더 필요하게 되었습니다.