* Set PHP 7.1.3 required version I've tried to specify ^7.0 version at first, but main package which is symfony/framework-bundle@v4.4.8 requires PHP ^7.1.3. * Bump Symfony FrameworkBundle to ^4.4.8 Current Symfony Framework stable version is v5.0.8, but I guess it requires significant codebase upgrade, so I've sticked with 4.4.8 which shouldn't cause any breaking changes. Old requirement was ^3.3|^4.1 which compatible with 4.4.8. * Bump PHPUnit version to ^7.0 PHPUnit 8.x version required PHP ^7.2, so I'm setting 7.x version to support PHP 7.1. There is new way to specify Kernel class, related PR: https://github.com/symfony/symfony/pull/22668 * Bump PHP CS Fixer version to ^2.16.3 Configuration and all renamed rules fixed. Config file renamed to .php_cs.dist as recommended in migration guide. Migration guide from 1.x to 2.x: https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/master/UPGRADE.md#config-file * Remove PHP_CodeSniffer package Second linter doesn't make sense. I think Symfony user would prefer PHP CS Fixer over PHP_CodeSniffer because first one maintained by Symfony members. * Remove satooshi/php-coveralls package from Composer This package is abandoned and Coveralls recommends to install it directly in Travis-CI task script. * Update Travic-CI config I've changed test versions to PHP 7.1.3 and 7.2. PHPUnit generates coverage report in report/logs/clover.xml file. Then PHP CS Fixer runs with --dry-run option to not override anything just to show coding style errors. * Add basic Coveralls config This is basic recommended config for a PHP based project. * Add symfony/yaml package This package was part of satooshi/php-coveralls, now it should be defined as dev dependency. * Do not commit composer.lock I think committed composer.lock can cause CI errors while tests on fresh installs are better. * Remove confusing Ruby comment
6.1 KiB
OpenAPIServer
This is a sample server Petstore server. For this sample, you can use the api key special-key
to test the authorization filters.
This Symfony bundle is automatically generated by the OpenAPI Generator project:
- API version: 1.0.0
- Build package: org.openapitools.codegen.languages.PhpSymfonyServerCodegen
Requirements
PHP 7.1.3 and later
Installation & Usage
To install the dependencies via Composer, add the following repository to composer.json
of your Symfony project:
{
"repositories": [{
"type": "path",
"url": "//Path to your generated openapi bundle"
}],
}
Then run:
composer require GIT_USER_ID/GIT_REPO_ID:dev-master
to add the generated openapi bundle as a dependency.
Tests
To run the unit tests for the generated bundle, first navigate to the directory containing the code, then run the following commands:
composer install
./vendor/bin/phpunit
Getting Started
Step 1: Please follow the installation procedure first.
Step 2: Enable the bundle in the kernel:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new OpenAPI\Server\OpenAPIServerBundle(),
// ...
);
}
Step 3: Register the routes:
# app/config/routing.yml
open_api_server:
resource: "@OpenAPIServerBundle/Resources/config/routing.yml"
Step 4: Implement the API calls:
<?php
// src/Acme/MyBundle/Api/PetApiInterface.php
namespace Acme\MyBundle\Api;
use OpenAPI\Server\Api\PetApiInterface;
class PetApi implements PetApiInterface // An interface is autogenerated
{
/**
* Configure OAuth2 access token for authorization: petstore_auth
*/
public function setpetstore_auth($oauthToken)
{
// Retrieve logged in user from $oauthToken ...
}
/**
* Implementation of PetApiInterface#addPet
*/
public function addPet(Pet $body)
{
// Implement the operation ...
}
// Other operation methods ...
}
Step 5: Tag your API implementation:
# src/Acme/MyBundle/Resources/services.yml
services:
# ...
acme.my_bundle.api.pet:
class: Acme\MyBundle\Api\PetApi
tags:
- { name: "open_api_server.api", api: "pet" }
# ...
Now you can start using the bundle!
Documentation for API Endpoints
All URIs are relative to http://petstore.swagger.io/v2
Class | Method | HTTP request | Description |
---|---|---|---|
PetApiInterface | addPet | POST /pet | Add a new pet to the store |
PetApiInterface | deletePet | DELETE /pet/{petId} | Deletes a pet |
PetApiInterface | findPetsByStatus | GET /pet/findByStatus | Finds Pets by status |
PetApiInterface | findPetsByTags | GET /pet/findByTags | Finds Pets by tags |
PetApiInterface | getPetById | GET /pet/{petId} | Find pet by ID |
PetApiInterface | updatePet | PUT /pet | Update an existing pet |
PetApiInterface | updatePetWithForm | POST /pet/{petId} | Updates a pet in the store with form data |
PetApiInterface | uploadFile | POST /pet/{petId}/uploadImage | uploads an image |
StoreApiInterface | deleteOrder | DELETE /store/order/{orderId} | Delete purchase order by ID |
StoreApiInterface | getInventory | GET /store/inventory | Returns pet inventories by status |
StoreApiInterface | getOrderById | GET /store/order/{orderId} | Find purchase order by ID |
StoreApiInterface | placeOrder | POST /store/order | Place an order for a pet |
UserApiInterface | createUser | POST /user | Create user |
UserApiInterface | createUsersWithArrayInput | POST /user/createWithArray | Creates list of users with given input array |
UserApiInterface | createUsersWithListInput | POST /user/createWithList | Creates list of users with given input array |
UserApiInterface | deleteUser | DELETE /user/{username} | Delete user |
UserApiInterface | getUserByName | GET /user/{username} | Get user by user name |
UserApiInterface | loginUser | GET /user/login | Logs user into the system |
UserApiInterface | logoutUser | GET /user/logout | Logs out current logged in user session |
UserApiInterface | updateUser | PUT /user/{username} | Updated user |
Documentation For Models
Documentation For Authorization
api_key
- Type: API key
- API key parameter name: api_key
- Location: HTTP header
petstore_auth
- Type: OAuth
- Flow: implicit
- Authorization URL: http://petstore.swagger.io/api/oauth/dialog
- Scopes:
- write:pets: modify pets in your account
- read:pets: read your pets