Nota Bene : 이 프로젝트는 Semver와 Changelog를 사용합니다. 그러나 그것은 안정적인 주요 버전이 아닙니다. 사소한 업데이트 (FE 0.5.* -> 0.6.*)는 뒤로 호환 될 수 있습니다!
미들웨어, PSR-7 및 React를 기반으로 한 빠른 구축 휴식 서비스를위한 간단한 PHP7 프레임 워크.
실행 인스턴스는 링크에서 찾을 수 있으며 예제 Repo도 참조하십시오.
$ composer require free-elephants/rest-daemon
예제/rest-server.php 및 문서의 예를 참조하십시오.
# your rest-server.php script
$server = new RestServer('127.0.0.1', 8080, '0.0.0.0', ['*']); // <- it's default arguments values
$server->run();
# can be runned as
$ php ./rest-server.php
모든 엔드 포인트 메소드 핸들러는 __invoke () 메소드가있는 함수 또는 클래스 중간ware와 같은 호출 가능 구현 일 수 있습니다.
<?php
class GetAttributeHandler extends AbstractEndpointMethodHandler
{
public function __invoke ( ServerRequestInterface $ request , ResponseInterface $ response , callable $ next )
{
$ name = $ request -> getAttribute ( ' name ' , ' World ' );
$ response -> getBody ()-> write ( ' {
"hello": " ' . $ name . ' !"
} ' );
return $ next ( $ request , $ response );
}
}
$ greetingAttributeEndpoint = new BaseEndpoint ( ' /greeting/{name} ' , ' Greeting by name in path ' );
$ greetingAttributeEndpoint -> setMethodHandler ( ' GET ' , new GetAttributeHandler ());
$ server -> addEndpoint ( $ greetingAttributeEndpoint );한 스크립트로 단계별로 서버를 빌드하는 방법보기
PHP-DI (또는 다른 PSR-11 컨테이너 구현)를 사용하고 파일 구성을 사용하여 RESTSERVERBUILDER를 사용하여보다 적은 구성 및 코딩을 할 수 있습니다.
파일 기반 라우팅 및 종속성 구성이있는 예를 참조하십시오. 구성 : rest-server.php
핸들러 경로의 모든 방법과 연결하고 선택적으로 모듈별로 경로를 구성 할 수 있습니다. 기본적으로 서버에는 모든 엔드 포인트에 대한 1 개의 기본 모듈이 포함되어 있습니다. 예를 참조하십시오 : lours.php
기본적으로 서버 인스턴스는 유용한 미들웨어와 함께 컬렉션을 제공합니다. 확장하거나 재정의 할 수 있습니다.
<?php
$ requestCounter = function (
ServerRequestInterface $ request ,
ResponseInterface $ response ,
callable $ next
) {
static $ requestNumber = 0 ;
printf ( ' [%s] request number #%d handled ' . PHP_EOL , date ( DATE_ISO8601 ), ++ $ requestNumber );
return $ next ( $ request , $ response );
};
$ extendedDefaultMiddlewareCollection = new DefaultEndpointMiddlewareCollection ([], [ $ requestCounter ]);
$ server -> setMiddlewareCollection ( $ extendedDefaultMiddlewareCollection ); 모든 엔드 포인트의 메소드 핸들러는이 컬렉션으로 포장되어 미들웨어 after 와 before 에 정의됩니다. 또한 키를 통해 모든 내장 미들웨어에 액세스하여 기본 미들웨어 컬렉션을 구성 할 수 있습니다.이 컬렉션은 ArrayAccess 인터페이스를 구현합니다.
<?php
$ server -> getMiddlewareCollection ()-> getBefore ()-> offsetUnset ( FreeElephants RestDaemon Middleware MiddlewareRole:: NO_CONTENT_STATUS_SETTER );... 구현됩니다 ...
... 구현됩니다 ...