@@ -118,3 +118,68 @@ class User extends Serialize {
118118 }
119119}
120120```
121+
122+ ## Auto Create OpenApi Doc
123+
124+ ### Creating Request
125+
126+ ``` php
127+ use Astral\Serialize\Serialize;
128+
129+ class UserAddRequest extends Serialize {
130+ public string $name;
131+ public int $id;
132+ }
133+
134+ class UserDetailRequest extends Serialize {
135+ public int $id;
136+ }
137+ ```
138+
139+ ### Creating Response
140+ ``` php
141+ use Astral\Serialize\Serialize;
142+
143+ class UserDto extends Serialize {
144+ public string $name,
145+ public int $id;
146+ }
147+ ```
148+
149+ ### Creating Controller
150+ ``` php
151+ use Astral\Serialize\Serialize;
152+ use Astral\Serialize\OpenApi\Enum\MethodEnum;
153+
154+ #[\Astral\Serialize\OpenApi\Annotations\Tag('User Module Management')]
155+ class UserController {
156+
157+ #[\Astral\Serialize\OpenApi\Annotations\Summary('Create User')]
158+ #[\Astral\Serialize\OpenApi\Annotations\Route('/user/create')]
159+ #[\Astral\Serialize\OpenApi\Annotations\RequestBody(UserAddRequest::class)]
160+ #[\Astral\Serialize\OpenApi\Annotations\Response(UserDto::class)]
161+ public function create()
162+ {
163+ return new UserDto();
164+ }
165+
166+ #[\Astral\Serialize\OpenApi\Annotations\Summary('User Detail')]
167+ #[\Astral\Serialize\OpenApi\Annotations\Route(route:'/user/detail', method: MethodEnum::GET)]
168+ public function detail(UserDetailRequest $request): UserDto
169+ {
170+ return new UserDto();
171+ }
172+ }
173+ ```
174+ ### Starting the Service
175+
176+ #### Docker Deployment
177+
178+ Navigate to the project root directory first:
179+
180+ ``` shell
181+ docker run -v $PWD /vendor/astral/php-serialize/src/OpenApi/Frankenphp/Caddyfile:/etc/frankenphp/Caddyfile -v $PWD :/app -p 8089:80 dunglas/frankenphp
182+ ```
183+ Access ` http://127.0.0.1:8089/docs ` to view the documentation.
184+
185+ ![ UI-IMG] ( ./docs/en/openapi/ui.png )
0 commit comments