forked from loafle/openapi-generator-original
[core] Initial FeatureSet structures and definitions Add default feature set to DefaultCodegen Initial FeatureSet definitions for: * ada * android * apache2 * asciidoc * aspnetcore * avro * bash * c * clojure * cpp-pistache-server * cpp-qt5-client * cpp-qt5-qhttpengine-server * cpp-restbed-server * cpp-restsdk * cpp-tizen * csharp * csharp-nancyfx * csharp-netcore * cwiki * dart * eiffel * elixir * elm * erlang * flash * fsharp-functions * go Client/Server * graphql-nodejs-express-server * graphql-schema * groovy * haskell * haskell-http-client * java * jmeter * kotlin * kotlin vertx * kotlin-server * kotlin-spring * lua * mysql * nim * nodejs * nodejs-express * objc * ocaml * openapi * openapi-yaml * perl * php * php-laravel * php-lumen * php-silex * php-slim * php-symfony * php-ze-ph * powershell * protobuf * protobuf-schema * python * python-aiohttp * python-blueplanet * python-experimental * r * ror * ruby * ruby * ruby-sinatra * rust * scala-akka * scala-finch * scala-gatling * scala-http-client * scala-lagom * scala-play * scalatra * scalaz * spring * static docs * swift * typescript
233 lines
10 KiB
Markdown
233 lines
10 KiB
Markdown
# php-base - PHP Slim Server library for OpenAPI Petstore
|
|
|
|
* [OpenAPI Generator](https://openapi-generator.tech)
|
|
* [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
|
|
|
|
Switch on option in `./index.php`:
|
|
```diff
|
|
/**
|
|
* When true, additional information about exceptions are displayed by the default
|
|
* error handler.
|
|
* Default: false
|
|
*/
|
|
--- // 'displayErrorDetails' => false,
|
|
+++ 'displayErrorDetails' => true,
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
All URIs are relative to *http://petstore.swagger.io:80/v2*
|
|
|
|
> 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
|
|
------------ | ------------- | ------------- | -------------
|
|
*AbstractAnotherFakeApi* | **call123TestSpecialTags** | **PATCH** /another-fake/dummy | To test special tags
|
|
*AbstractFakeApi* | **createXmlItem** | **POST** /fake/create_xml_item | creates an XmlItem
|
|
*AbstractFakeApi* | **fakeOuterBooleanSerialize** | **POST** /fake/outer/boolean |
|
|
*AbstractFakeApi* | **fakeOuterCompositeSerialize** | **POST** /fake/outer/composite |
|
|
*AbstractFakeApi* | **fakeOuterNumberSerialize** | **POST** /fake/outer/number |
|
|
*AbstractFakeApi* | **fakeOuterStringSerialize** | **POST** /fake/outer/string |
|
|
*AbstractFakeApi* | **testBodyWithFileSchema** | **PUT** /fake/body-with-file-schema |
|
|
*AbstractFakeApi* | **testBodyWithQueryParams** | **PUT** /fake/body-with-query-params |
|
|
*AbstractFakeApi* | **testClientModel** | **PATCH** /fake | To test \"client\" model
|
|
*AbstractFakeApi* | **testEndpointParameters** | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
|
|
*AbstractFakeApi* | **testEnumParameters** | **GET** /fake | To test enum parameters
|
|
*AbstractFakeApi* | **testGroupParameters** | **DELETE** /fake | Fake endpoint to test group parameters (optional)
|
|
*AbstractFakeApi* | **testInlineAdditionalProperties** | **POST** /fake/inline-additionalProperties | test inline additionalProperties
|
|
*AbstractFakeApi* | **testJsonFormData** | **GET** /fake/jsonFormData | test json serialization of form data
|
|
*AbstractFakeApi* | **testQueryParameterCollectionFormat** | **PUT** /fake/test-query-paramters |
|
|
*AbstractFakeClassnameTags123Api* | **testClassname** | **PATCH** /fake_classname_test | To test class name in snake case
|
|
*AbstractPetApi* | **addPet** | **POST** /pet | Add a new pet to the store
|
|
*AbstractPetApi* | **findPetsByStatus** | **GET** /pet/findByStatus | Finds Pets by status
|
|
*AbstractPetApi* | **findPetsByTags** | **GET** /pet/findByTags | Finds Pets by tags
|
|
*AbstractPetApi* | **updatePet** | **PUT** /pet | Update an existing pet
|
|
*AbstractPetApi* | **deletePet** | **DELETE** /pet/{petId} | Deletes a pet
|
|
*AbstractPetApi* | **getPetById** | **GET** /pet/{petId} | Find pet by ID
|
|
*AbstractPetApi* | **updatePetWithForm** | **POST** /pet/{petId} | Updates a pet in the store with form data
|
|
*AbstractPetApi* | **uploadFile** | **POST** /pet/{petId}/uploadImage | uploads an image
|
|
*AbstractPetApi* | **uploadFileWithRequiredFile** | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required)
|
|
*AbstractStoreApi* | **getInventory** | **GET** /store/inventory | Returns pet inventories by status
|
|
*AbstractStoreApi* | **placeOrder** | **POST** /store/order | Place an order for a pet
|
|
*AbstractStoreApi* | **deleteOrder** | **DELETE** /store/order/{order_id} | Delete purchase order by ID
|
|
*AbstractStoreApi* | **getOrderById** | **GET** /store/order/{order_id} | Find purchase order by ID
|
|
*AbstractUserApi* | **createUser** | **POST** /user | Create user
|
|
*AbstractUserApi* | **createUsersWithArrayInput** | **POST** /user/createWithArray | Creates list of users with given input array
|
|
*AbstractUserApi* | **createUsersWithListInput** | **POST** /user/createWithList | Creates list of users with given input array
|
|
*AbstractUserApi* | **loginUser** | **GET** /user/login | Logs user into the system
|
|
*AbstractUserApi* | **logoutUser** | **GET** /user/logout | Logs out current logged in user session
|
|
*AbstractUserApi* | **deleteUser** | **DELETE** /user/{username} | Delete user
|
|
*AbstractUserApi* | **getUserByName** | **GET** /user/{username} | Get user by user name
|
|
*AbstractUserApi* | **updateUser** | **PUT** /user/{username} | Updated user
|
|
|
|
|
|
## Models
|
|
|
|
* OpenAPIServer\Model\AdditionalPropertiesAnyType
|
|
* OpenAPIServer\Model\AdditionalPropertiesArray
|
|
* OpenAPIServer\Model\AdditionalPropertiesBoolean
|
|
* OpenAPIServer\Model\AdditionalPropertiesClass
|
|
* OpenAPIServer\Model\AdditionalPropertiesInteger
|
|
* OpenAPIServer\Model\AdditionalPropertiesNumber
|
|
* OpenAPIServer\Model\AdditionalPropertiesObject
|
|
* OpenAPIServer\Model\AdditionalPropertiesString
|
|
* OpenAPIServer\Model\Animal
|
|
* OpenAPIServer\Model\ApiResponse
|
|
* OpenAPIServer\Model\ArrayOfArrayOfNumberOnly
|
|
* OpenAPIServer\Model\ArrayOfNumberOnly
|
|
* OpenAPIServer\Model\ArrayTest
|
|
* OpenAPIServer\Model\BigCat
|
|
* OpenAPIServer\Model\BigCatAllOf
|
|
* OpenAPIServer\Model\Capitalization
|
|
* OpenAPIServer\Model\Cat
|
|
* OpenAPIServer\Model\CatAllOf
|
|
* OpenAPIServer\Model\Category
|
|
* OpenAPIServer\Model\ClassModel
|
|
* OpenAPIServer\Model\Client
|
|
* OpenAPIServer\Model\Dog
|
|
* OpenAPIServer\Model\DogAllOf
|
|
* OpenAPIServer\Model\EnumArrays
|
|
* OpenAPIServer\Model\EnumClass
|
|
* OpenAPIServer\Model\EnumTest
|
|
* OpenAPIServer\Model\File
|
|
* OpenAPIServer\Model\FileSchemaTestClass
|
|
* OpenAPIServer\Model\FormatTest
|
|
* OpenAPIServer\Model\HasOnlyReadOnly
|
|
* OpenAPIServer\Model\MapTest
|
|
* OpenAPIServer\Model\MixedPropertiesAndAdditionalPropertiesClass
|
|
* OpenAPIServer\Model\Model200Response
|
|
* OpenAPIServer\Model\ModelList
|
|
* OpenAPIServer\Model\ModelReturn
|
|
* OpenAPIServer\Model\Name
|
|
* OpenAPIServer\Model\NumberOnly
|
|
* OpenAPIServer\Model\Order
|
|
* OpenAPIServer\Model\OuterComposite
|
|
* OpenAPIServer\Model\OuterEnum
|
|
* OpenAPIServer\Model\Pet
|
|
* OpenAPIServer\Model\ReadOnlyFirst
|
|
* OpenAPIServer\Model\SpecialModelName
|
|
* OpenAPIServer\Model\Tag
|
|
* OpenAPIServer\Model\TypeHolderDefault
|
|
* OpenAPIServer\Model\TypeHolderExample
|
|
* OpenAPIServer\Model\User
|
|
* OpenAPIServer\Model\XmlItem
|
|
|
|
|
|
## 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 `api_key_query`
|
|
> 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 `http_basic_test`
|
|
> Important! To make Basic authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\BasicAuthenticator](./src/Auth/BasicAuthenticator.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
|
|
* `read:pets` - read your pets
|
|
|
|
### Advanced middleware configuration
|
|
Ref to used Slim Token Middleware [dyorg/slim-token-authentication](https://github.com/dyorg/slim-token-authentication/tree/1.x#readme)
|