1. Go to this page and download the library: Download cvcv/think-openapi library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
cvcv / think-openapi example snippets
namespace app\controller;
use app\validate\UserValidate;
use app\resource\UserResource;
use Cvcv\ThinkOpenApi\Attribute\ApiDoc;
use Cvcv\ThinkOpenApi\Attribute\ApiGroup;
use Cvcv\ThinkOpenApi\OpenApi\ResponseDataType;
use think\response\Json;
#[ApiGroup(tags: ['Users'])]
final class UserController
{
#[ApiDoc(
summary: '用户列表',
validate: UserValidate::class,
scene: 'index',
response: UserResource::class,
responseType: ResponseDataType::Page,
)]
public function index(): Json
{
return json();
}
#[ApiDoc(
summary: '创建用户',
tags: ['Write'],
validate: UserValidate::class,
scene: 'store',
response: UserResource::class,
)]
public function save(): Json
{
return json();
}
#[ApiDoc(
summary: '删除用户',
)]
public function delete(): \think\Response
{
return response('', 204);
}
}
use app\controller\UserController;
use think\facade\Route;
Route::get('users', [UserController::class, 'index']);
Route::post('users', [UserController::class, 'save']);
Route::delete('users/<id>', [UserController::class, 'delete']);
namespace app\resource;
use Cvcv\ThinkOpenApi\OpenApi\ObjectSchema;
use Cvcv\ThinkOpenApi\OpenApi\Schema;
use Cvcv\ThinkOpenApi\OpenApi\SchemaProvider;
final class UserResource implements SchemaProvider
{
public static function openApiSchemaName(): string
{
return 'User';
}
public static function openApiSchemas(): array
{
return ObjectSchema::make(self::openApiSchemaName())
->property('id', Schema::integer('用户 ID'),
namespace app\openapi;
use Cvcv\ThinkOpenApi\OpenApi\Security\AuthState;
use Cvcv\ThinkOpenApi\OpenApi\Security\MiddlewareSecurityInspector;
final class AdminSecurityInspector implements MiddlewareSecurityInspector
{
public function inspect(string $middleware, array $parameters, AuthState $state): void
{
if ($middleware !== \app\middleware\AdminAuth::class) {
return;
}
$state->