Benjamin Häublein 77fa028bb3
[php-symfony] Symfony6 support (#11810)
* support symfony6

* fix issues with StrictJsonDeserialization

* regenerate samples

* add suggestions

* update samples

* support php 7.4 and symfony 5

* allow versions based on semantic versioning

* regenerate sample

* change method of determining result types

* update samples

* describe usage of bundle in symfony app

* better documentation

* fix duplicate auth methods

* do not set namespace for default types

* fix UploadedFile type

* next try fixing auth

* regenerate samples

* fix: auth method shall not be duplicated

* Revert "fix duplicate auth methods"

This reverts commit 0dc418737b1379a30b7f22e7937819ba965c9ddb.

* chore: regenerate samples

* fix tests

* regenerate sample

* more fixes for tests

* update tests

* add kernel shutdown

Co-authored-by: Benjamin Haeublein <benjaminh@testing-vm.lan.benjaminh.de>
Co-authored-by: Renaud de Chivré <renaud@tahitiwebdesign.com>
2022-05-25 15:34:50 +08:00
..
2019-05-13 15:59:59 +08:00
2021-09-09 12:49:03 +08:00
2022-04-24 15:38:16 +08:00
2018-05-09 10:34:19 +08:00

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 8.0 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 bundle configuration:

// app/config/bundles.php
return [
    // ...
    OpenAPI\Server\OpenAPIServerBundle::class => ['all' => true],
];

Step 3: Register the routes:

# app/config/routes.yaml
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 $pet, &$responseCode, array &$responseHeaders): array|\OpenAPI\Server\Model\Pet
    {
        // Implement the operation ...
    }

    // Other operation methods ...
}

Step 5: Tag your API implementation:

# config/services.yml
services:
    # ...
    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

Author