최신 PHP 지원을 위해 버전 3 RC6에서 업그레이드됨
Restler는 PHP로 작성된 간단하고 효과적인 다중 형식 웹 API 서버입니다.
PHP에서 비즈니스 로직을 처리하면 Restler가 REST를 처리합니다!
@url GET my/custom/url/{param}
PHPDoc 주석 사용 가장 안정적이고 최신 버전은 master
브랜치에 있고 이전 버전은 v4
, v3
, v2
및 v1
과 같은 버전 브랜치에 있습니다.
v5
와 같은 현재 버전의 버전 브랜치는 다음 릴리스를 빌드하는 데 사용됩니다. 문서는 자주 업데이트되지 않을 수 있으므로 대담한 사람들을 위해 예약되어 있습니다.
features/html
및 features/router
같은 기능 분기는 순전히 기능을 시험해 보기 위한 실험 목적입니다. 준비가 되면 병합될 수 있습니다.
예제를 시험해 보려면 이 저장소를 설치하세요.
서버에서 PHP 5.4 이상을 사용할 수 있는지 확인하세요. 더 나은 성능을 위해 최신 버전을 사용하는 것이 좋습니다.
Restler는 Composer를 사용하여 종속성을 관리합니다. 먼저, composer.phar
사본을 다운로드하세요. 프로젝트 폴더에 보관하거나 이상적으로는 usr/local/bin
에 보관하여 모든 프로젝트에 전역적으로 사용할 수 있습니다. Windows를 사용하는 경우 대신 Composer Windows 설치 프로그램을 사용할 수 있습니다.
터미널에서 프로젝트 생성 명령을 실행하여 Restler를 설치할 수 있습니다. {projectName}을 실제 프로젝트 이름으로 바꾸세요. 해당 이름의 폴더가 생성되고 Restler가 설치됩니다.
php composer.phar create-project luracast/restler {projectName}
메모:-
추가 형식과 BDD 도구를 원하지 않는 경우
--no-dev
포함하여 개발 패키지를 강제로 제외할 수 있습니다.Bleading Edge v3 브랜치를 사용해 보거나 기능 > 브랜치 중 하나에 위 명령에
3.x-dev
또는dev-features/html
포함되어 있는 경우
Composer를 설치한 후 최신 버전의 Restler 프레임워크를 다운로드하고 해당 콘텐츠를 서버의 디렉터리에 추출하세요. 다음으로 Restler 프로젝트의 루트에서 php composer.phar install
(또는 composer install
) 명령을 실행하여 모든 프레임워크의 종속성을 설치합니다. 이 프로세스를 성공적으로 완료하려면 Git이 서버에 설치되어 있어야 합니다.
Restler 프레임워크를 업데이트하려면 php composer.phar update
명령을 실행할 수 있습니다.
참고:- 서버에 작곡가와 git을 설치할 수 없는 경우 개발 컴퓨터에 설치하고 실행할 수 있습니다. 생성된 파일과 폴더는 서버에 업로드하여 사용할 수 있습니다.
이상적으로는 공용 폴더를 웹 루트로 매핑해야 합니다. 이는 선택 사항이지만 불필요한 파일과 폴더는 노출하지 않는 것이 좋습니다.
로컬 호스트에서 실제 예제를 사용해 보세요.
composer serve
명령을 사용하여 PHP의 내장 서버를 시작할 수 있습니다.
behat.yml
에 지정된 base_url을 업데이트하고 다음 명령을 시도하십시오.
vendor/bin/behat
또는
composer test
실행할 수 있습니다
이는 예상되는 동작에 대해 예제를 테스트합니다. 예를 들어
Feature : Testing CRUD Example
Scenario : Creating new Author with JSON
Given that I want to make a new "Author"
And his "name" is "Chris"
And his "email" is "[email protected]"
And the request is sent as JSON
When I request "/examples/_007_crud/authors"
Then the response status code should be 200
And the response should be JSON
And the response has a "id" property
모든 준비가 완료되었습니다. 즐거운 휴식을 취하세요! :)
나만의 Restler API 서버를 만드는 두 가지 옵션이 있습니다.
가장 편리한 옵션은 비즈니스 로직에도 도움이 되는 많은 패키지와 통합되어 있는 Restler 애플리케이션과 같은 애플리케이션 템플릿을 사용하는 것입니다. 이 옵션을 선택하는 경우 해당 저장소에서 분기를 선택하고 거기에서 제공되는 지침을 따르십시오.
애플리케이션의 모든 측면을 완전히 제어할 수 있도록 처음부터 프로젝트를 만듭니다. 이 옵션을 선택하는 경우 아래 단계를 따르세요.
composer init
실행하고 이에 따라 composer.json
만듭니다.restler/framework
및 ^5
입력하세요.composer require restler/framework:^5
실행할 수 있습니다.우리는 패키지에 필요한 공간을 줄이기 위해
luracast/restler
대신restler/framework
사용하고 있습니다. https://github.com/Luracast/Restler-Framework에서 제공되며 여기에는 src 폴더의 내용만 포함되어 있습니다.
처음부터 구축하는 경우에도 애플리케이션 템플릿을 확인하면 폴더 구조를 결정하고 다른 유용한 패키지를 찾는 데 도움이 됩니다.
필요한 모든 공개 및 보호 메서드를 사용하여 API 클래스를 만듭니다.
다음과 같이 게이트웨이(public/index.php)를 생성합니다.
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> handle (); //serve the response
URL 재작성 활성화
웹사이트에 대한 URL 재작성을 활성화하여 모든 요청이 index.php로 이동하는지 확인하세요.
예를 들어:-
Apache를 사용하는 경우 다음과 같은 .htaccess 파일을 사용할 수 있습니다.
DirectoryIndex index.php
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</ IfModule >
< IfModule mod_php5.c>
php_flag display_errors On
</ IfModule >
참고:- 이를 위해서는
httpd.conf
파일에서AllowOverride
None
대신All
로 설정해야 하며 일부 서버 구성을 약간 조정해야 할 수도 있습니다. 자세한 내용은 mod_rewrite 문서를 참조하세요.
Nginx를 사용하는 경우 server_name
설정하고 PHP 스크립트를 127.0.0.1:9000에서 수신 대기하는 빠른 cgi(PHP-FPM)에 전달해야 합니다.
server {
listen 80;
server_name api.luracast.com; //change it to match your server name
//... other stuff
location ~ .php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
//... other stuff
}
참고:- 이를 위해서는 PHP, PHP-FPM이 올바르게 설치되고 구성되어야 합니다. 자세한 내용은 PHP FastCGI 예제를 참조하세요.
필요에 맞게 미세 조정
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
use Luracast Restler Defaults ;
//set the defaults to match your requirements
Defaults:: $ throttle = 20 ; //time in milliseconds for bandwidth throttling
//setup restler
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAPIClass ( ' Explorer ' ); //from restler framework for API Explorer
$ r -> addFilterClass ( ' RateLimit ' ); //Add Filters as needed
$ r -> handle (); //serve the response
API를 탐색하고 브라우저의 웹 루트에서 explorer/index.html
열어 사용해 보세요.
즐거운 탐험 되세요! :)
참고:- eAccelerator를 사용하면 주석이 제거되므로 Restler가 실패할 수 있습니다. 자세한 내용은 여기에서 확인할 수 있습니다.
Restler는 API 미세 조정을 위해 PHPDoc 주석 형식의 주석을 지원합니다.
주석 아래에 자세히 설명되어 있습니다.
API를 보호하려면 유효한 사용자를 인증하고 허용하세요.
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAuthenticationClass ( ' CustomAuth ' ); //Add Authentication classes as needed
$ r -> handle (); //serve the response
기본적으로 Restler는 자세한 오류 메시지를 표시하고 API 결과를 사람이 읽을 수 있는 형식으로 구체화하여 API 개발자를 위해 더욱 세밀하게 조정된 디버그 모드에서 실행됩니다.
프로덕션 모드를 켜면 경로를 캐시하고(댓글 구문 분석은 모든 API 호출 대신 한 번만 발생함) 다른 파일을 거의 캐시하지 않으며 디버그 정보 제공을 방지하므로 성능이 약간 향상됩니다.
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
//setup restler
$ r = new Restler ( true ); //turn on production mode by passing true.
//If you are using file based cache (the default) make sure cache folder is
//writable. when you make changes to your code make sure you delete the
// routes.php inside the cache folder
//...
참고:- 프로덕션 모드가
true
로 설정되면 항상 캐시를 사용하며 변경 사항 및 새 경로가 있는 경우 감지하지 않습니다. 지속적 통합 파이프라인 또는 git 후크는 배포 프로세스 중에 이 파일을 삭제해야 합니다. 또는 변경 사항을 적용해야 할 때 캐시를 새로 고치기 위해 두 번째 매개변수를 Restler 생성자에 전달할 수 있습니다.
composer serve
명령으로 PHP 개발 서버 지원을 추가합니다.composer serve
서브로 서버를 실행한 후 composer test
명령으로 테스트를 실행하는 기능.$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
이를 /swagger
에 매핑합니다.지정된 경로 및 http 메서드를 제외하고 특정 버전의 API에 대한 모든 경로를 나열하는 findAll 메서드를 제공하도록 Routes 클래스가 개선되었습니다.
실제 속성을 무시하고 발견 시 경로에서 활용하는 마법 속성입니다. 이는 Eloquent와 같은 동적 모델 클래스에 유용합니다.
이제 매개변수가 객체일 때 경로를 통해 @required
및 @properties
배열이 될 수 있습니다. 이는 각 API 메서드의 속성을 다르게 선택하고 선택하는 데 도움이 됩니다. 예시 {@properties property1,property2,property3}
{@required property1,property2}
는 3개의 속성만 찾도록 API를 만들고 그 중 2개가 필수입니다.
Nav 클래스를 최적화했습니다. 이제 Explorer 클래스와 함께 Routes::findAll()
을 사용합니다.
Restler 클래스에는 $_SERVER['HTTP_HOST']
사용하여 설정할 수 있는 허용 가능한 기본 URL을 설정하는 setBaseUrls 메소드가 있습니다. 이유를 이해하려면 이 기사를 읽어보세요. 이는 다음과 같은 경우에 유용합니다.
이제 Restler 클래스를 사용하면 api 메소드에서 $this->restler->responseCode
설정하여 상태 코드를 재정의할 수 있습니다.
포함된 속성을 emmet 템플릿으로 보내도록 Forms 클래스가 개선되었습니다. 예를 들어
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
다음 양식을 생성합니다.
<form role="form" id="form1" method="POST" ...
emmet 템플릿에 ID가 있기 때문입니다(아래 참조).
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
주석과 함께 포함된 속성을 사용하여 html 속성(예: id, accept 등)을 쉽게 설정합니다.@class
주석을 사용하여 해당 속성을 설정할 수 있습니다. 예: - @class Validator {@holdException}
유효성 검사기가 예외를 발생시키는 대신 보관하도록 만듭니다.@property
, @property-read
, @property-write
구문 분석할 수 있습니다.string[]
, DateTime[]
과 같은 짧은 배열 구문을 지원합니다.Scope::$resolver
속성을 사용하여 선택한 외부 DI 컨테이너에 대한 지원을 추가합니다.String
클래스의 이름을 Text
로 변경했습니다. (String은 php7의 예약 키워드입니다.)