定制 free-elephants/rest-daemon 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

free-elephants/rest-daemon

Composer 安装命令:

composer require free-elephants/rest-daemon

包简介

PHP http socket REST server

README 文档

README

Build Status codecov Installs Releases

Nota Bene: This project uses semver and changelog. But it's not a stable major version. Any minor update (f.e. 0.5.* -> 0.6.*) can break backward compatibility!

Simple PHP7 framework for fast building REST services based on middleware, PSR-7 and react.

Runned instance can be found by link, also see example repo.

Features:

  • Middleware oriented request/response handling
  • Priority PSR's support: PSR-2, -3, -4, -7, -11, -15 and other.
  • Built-in Middleware to support usual REST features, like HTTP based semantics, content types, request parsing, headers.
  • Choose one of two available http-daemon drivers: Ratchet ReactPHP or Aerys.
  • Swagger Integration

Installation

$ composer require free-elephants/rest-daemon

Usage

See example in example/rest-server.php and documentation.

Create and Run Server:

# 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 

Add Your RESTful API Endpoints

Any endpoint method handler can be Middleware-like callable implementation: function or class with __invoke() method.

<?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);

See how to build server for step by step in one script

RestServerBuilder

You can use php-di (or another PSR-11 container implementation) and routing file configuration with RestServerBuilder for more configuring and coding less.

See example with file based routing and dependencies configuration: rest-server.php

Routing

You can link with every method in route a handler, and optionally organize routes by modules. By default server contain 1 default module for all endpoints. See example: routes.php

Configure Common Application Middleware

By default server instance provide collection with some useful middleware. You can extend or override it:

<?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);

Every endpoint's method handler will be wrapped to this collection and called between defined as after and before middleware. Also you can configure default middleware collection with access to every built-in middleware by key: this collection implements ArrayAccess interface.

<?php
$server->getMiddlewareCollection()->getBefore()->offsetUnset(\FreeElephants\RestDaemon\Middleware\MiddlewareRole::NO_CONTENT_STATUS_SETTER);

Customize Endpoint Middleware

... Will be implemented...

Debugging and Logging

... Will be implemented...

统计信息

  • 总下载量: 147
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-2-Clause
  • 更新时间: 2017-03-29

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固