avalanche-development/swagger-router-middleware 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

avalanche-development/swagger-router-middleware

Composer 安装命令:

composer require avalanche-development/swagger-router-middleware

包简介

README 文档

README

PHP middleware that parses and attaches swagger information to a request object.

Build Status Code Climate Test Coverage

Installation

It's recommended that you use Composer to install swagger-router-middleware.

$ composer require avalanche-development/swagger-router-middleware

swagger-router-middleware requires PHP 5.6 or newer.

Usage

This middleware is instantiated with swagger (in the form of an array) and then, when invoked as middleware, will walk through the swagger document and parse things out. Specifically, it will pull out the path and operation, resolve parameters and security definitions, and parse out parameters based on the swagger definition.

$router = new AvalancheDevelopment\SwaggerRouterMiddleware\Router([..swagger..]);
$result = $router($request, $response, $next); // middleware signature

It is recommended that this is one of the top items in the stack, as the swagger information that is parsed out can be used for request/response validation deeper in.

Interface

Once everything passes through successfully, the $request object will have the following attribute passed on.

'swagger' => [
    'apiPath' => '/comments/{comment_id}', // matched string path
    'path' => [ ... ], // full path definition
    'operation' => [ ... ], // specific operation definition
    'params' => [ ... ], // resolved list of parameters for this operation
    'security' => [ ... ], // resolved list of securities
    'schemes' => [ ... ], // resolved list of schemes
    'produces' => [ ... ], // resolved list of producible content types
    'consumes' => [ ... ], // resolved list of consumable content types
    'responses' => [ ... ], // resolved list of responses
]

An important note is that each parameter in the list will include a 'value' key that, if the parameter was passed into the request (or has a default), will be populated.

Documentation Route

If the standard 'documentation route' is detected (path of /api-docs), the rest of the stack is immediately skipped and the swagger spec is returned as json. An error with json_encode will throw a standard \Exception.

Invalid Requests

There is some routing being done here. If the request route cannot be found in swagger, or if the method is not supported, appropriate peel exceptions are thrown. Also, if there is an error with parameter parsing that appears to be an issue with request, a peel BadRequest is thrown. An error handler can listen for these HttpErrorInterface exceptions and respond appropriately.

Parameter Parsing

The middleware will do it's best to parse out the parameters for the request without too much validation. It loops through the swagger definition, looking for the parameters that are applicable for the route, and pull them from header/query/path/etc.

Again, this middleware will not check the existence, validity, or type of parameters based on the spec. It only tries to pull and expects something else in the stack to verify integrity.

Development

This library is still being developed and some bugs may be experienced. Feel free to add issues or submit pull requests when road bumps are noticed.

Tests

To execute the test suite, you'll need phpunit (and to install package with dev dependencies).

$ phpunit

License

swagger-router-middleware is licensed under the MIT license. See License File for more information.

统计信息

  • 总下载量: 1.86k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 4
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-10-27

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固