Home >Backend Development >PHP Tutorial >Integrate Swagger UI with Codeigniter4
Swagger is a widely used API documentation and testing tool that seamlessly integrates with popular web frameworks like Laravel, Spring Boot, CodeIgniter, and ExpressJS. In this article, we will focus on integrating Swagger with CodeIgniter.
composer require zircote/swagger-php doctrine/annotations
To generate the swagger.json file for Swagger UI we will have to create a controller. Name the controller as your choice we are giving it SwaggerDocGenerator.php. In the controller, we will have to use OpenApiGenerator from zircote/swagger-php to convert all the @OA syntax into a JSON.
<?php namespace App\Controllers; use OpenApi\Generator; class SwaggerDocGenerator extends BaseController { /** * Generate OpenAPI documentation for the API ... * @return string */ public function generate(): string { // Specify the path where your API controllers are located $openapi = Generator::scan([APPPATH . 'Controllers']); $swaggerContent = $openapi->toJson(); // Save the generated OpenAPI content to a file $filePath = FCPATH . 'swagger_ui/swagger.json'; file_put_contents($filePath, $swaggerContent); return $swaggerContent; } /** * Render the SwaggerUI ... * @return string */ public function index() { return view('swagger_docs/index'); } } ?>
By creating a route on Config/Routes.php we will be able to generate the expected sawgger.json file.
// Create API documentation ... $routes->get('api/v1/docs/generate', 'SwaggerDocGenerator::generate'); $routes->get('api/v1/docs/ui', 'SwaggerDocGenerator::index');
In this, we will see the first two ways. We will talk about the 3rd way in another article.
composer require zircote/swagger-php doctrine/annotations
In this article, we explored integrating Swagger with CodeIgniter 4, generating the swagger.json file, rendering it in Swagger UI, and importing it into Postman. We also demonstrated how to render Swagger UI within custom views. However, manually generating the swagger.json file and updating the URL in the swagger-initializer.js file is not ideal.
In the next article, I will demonstrate automating this process using custom CLI commands and aim to develop an open-source package for this purpose. Feel free to share your suggestions or queries in the comments section.
The above is the detailed content of Integrate Swagger UI with Codeigniter4. For more information, please follow other related articles on the PHP Chinese website!