forked from loafle/openapi-generator-original
* [Slim] Add fork of token middleware This commit will be dropped, when official repo approves submitted PRs. Right now it's for test purposes only. * [Slim] Adds token middleware to template * [Slim] Move auth implementation to external classes * [Slim] Update readme * [Slim] Add config example * [Slim] Remove deprecated package Considered to use dyorg/slim-token-authentication for all authentication schemes. User needs to decode and parse Basic token himself, but it's pretty simple task and there are many code examples in the web. Most of time solution is two lines of code. * [Slim] Format phpdoc comments I've changed PHP version to 7 and updated comments to follow main recommendations. Used PHPCodesniffer rules are Generic.Commenting, Squiz.Commenting, PEAR.Commenting. Of course I applied only reasonable sniffs from this standards. @category tag has been deleted as deprecated accordingly to phpDocumentor offical docs. Ref: http://docs.phpdoc.org/references/phpdoc/tags/category.html * [Slim] Refresh samples
138 lines
4.9 KiB
Markdown
138 lines
4.9 KiB
Markdown
# php-base - PHP Slim Server library for OpenAPI Petstore *_/ ' \" =end -- \\r\\n \\n \\r
|
|
|
|
[Slim Framework Documentation](https://www.slimframework.com/docs/)
|
|
|
|
## Requirements
|
|
|
|
* Web server with URL rewriting
|
|
* PHP 7.0 or newer
|
|
|
|
This package contains `.htaccess` for Apache configuration.
|
|
If you use another server(Nginx, HHVM, IIS, lighttpd) check out [Web Servers](https://www.slimframework.com/docs/v3/start/web-servers.html) doc.
|
|
|
|
## Installation via [Composer](https://getcomposer.org/)
|
|
|
|
Navigate into your project's root directory and execute the bash command shown below.
|
|
This command downloads the Slim Framework and its third-party dependencies into your project's `vendor/` directory.
|
|
```bash
|
|
$ composer install
|
|
```
|
|
|
|
## Start devserver
|
|
|
|
Run the following command in terminal to start localhost web server, assuming `./php-slim-server/` is public-accessible directory with `index.php` file:
|
|
```bash
|
|
$ php -S localhost:8888 -t php-slim-server
|
|
```
|
|
> **Warning** This web server was designed to aid application development.
|
|
> It may also be useful for testing purposes or for application demonstrations that are run in controlled environments.
|
|
> It is not intended to be a full-featured web server. It should not be used on a public network.
|
|
|
|
## Tests
|
|
|
|
### PHPUnit
|
|
|
|
This package uses PHPUnit 6 or 7(depends from your PHP version) for unit testing.
|
|
[Test folder](test) contains templates which you can fill with real test assertions.
|
|
How to write tests read at [PHPUnit Manual - Chapter 2. Writing Tests for PHPUnit](https://phpunit.de/manual/6.5/en/writing-tests-for-phpunit.html).
|
|
|
|
#### Run
|
|
|
|
Command | Target
|
|
---- | ----
|
|
`$ composer test` | All tests
|
|
`$ composer test-apis` | Apis tests
|
|
`$ composer test-models` | Models tests
|
|
|
|
#### Config
|
|
|
|
Package contains fully functional config `./phpunit.xml.dist` file. Create `./phpunit.xml` in root folder to override it.
|
|
|
|
Quote from [3. The Command-Line Test Runner — PHPUnit 7.4 Manual](https://phpunit.readthedocs.io/en/7.4/textui.html#command-line-options):
|
|
|
|
> If phpunit.xml or phpunit.xml.dist (in that order) exist in the current working directory and --configuration is not used, the configuration will be automatically read from that file.
|
|
|
|
### PHP CodeSniffer
|
|
|
|
[PHP CodeSniffer Documentation](https://github.com/squizlabs/PHP_CodeSniffer/wiki). This tool helps to follow coding style and avoid common PHP coding mistakes.
|
|
|
|
#### Run
|
|
|
|
```bash
|
|
$ composer phpcs
|
|
```
|
|
|
|
#### Config
|
|
|
|
Package contains fully functional config `./phpcs.xml.dist` file. It checks source code against PSR-1 and PSR-2 coding standards.
|
|
Create `./phpcs.xml` in root folder to override it. More info at [Using a Default Configuration File](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#using-a-default-configuration-file)
|
|
|
|
### PHPLint
|
|
|
|
[PHPLint Documentation](https://github.com/overtrue/phplint). Checks PHP syntax only.
|
|
|
|
#### Run
|
|
|
|
```bash
|
|
$ composer phplint
|
|
```
|
|
|
|
## Show errors
|
|
|
|
Change line in `./index.php`:
|
|
```diff
|
|
--- $router = new SlimRouter();
|
|
+++ $router = new SlimRouter(['settings' => ['displayErrorDetails' => true]]);
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
All URIs are relative to *http://petstore.swagger.io *_/ ' \" =end -- \\r\\n \\n \\r/v2 *_/ ' \" =end -- \\r\\n \\n \\r*
|
|
|
|
> Important! Do not modify abstract API controllers directly! Instead extend them by implementation classes like:
|
|
|
|
```php
|
|
// src/Api/PetApi.php
|
|
|
|
namespace OpenAPIServer\Api;
|
|
|
|
use OpenAPIServer\Api\AbstractPetApi;
|
|
|
|
class PetApi extends AbstractPetApi
|
|
{
|
|
|
|
public function addPet($request, $response, $args)
|
|
{
|
|
// your implementation of addPet method here
|
|
}
|
|
}
|
|
```
|
|
|
|
Place all your implementation classes in `./src` folder accordingly.
|
|
For instance, when abstract class located at `./lib/Api/AbstractPetApi.php` you need to create implementation class at `./src/Api/PetApi.php`.
|
|
|
|
Class | Method | HTTP request | Description
|
|
------------ | ------------- | ------------- | -------------
|
|
*AbstractFakeApi* | **testCodeInjectEndRnNR** | **PUT** /fake | To test code injection *_/ ' \" =end -- \\r\\n \\n \\r
|
|
|
|
|
|
## Models
|
|
|
|
* OpenAPIServer\Model\ModelReturn
|
|
|
|
|
|
## Authentication
|
|
|
|
### Security schema `api_key`
|
|
> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class.
|
|
|
|
### Security schema `petstore_auth`
|
|
> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class.
|
|
|
|
Scope list:
|
|
* `write:pets` - modify pets in your account *_/ ' \" =end -- \\r\\n \\n \\r
|
|
* `read:pets` - read your pets *_/ ' \" =end -- \\r\\n \\n \\r
|
|
|
|
### Advanced middleware configuration
|
|
Ref to used Slim Token Middleware [dyorg/slim-token-authentication](https://github.com/dyorg/slim-token-authentication/tree/1.x#readme)
|