@@ -118,3 +118,68 @@ class User extends Serialize {
118
118
}
119
119
}
120
120
```
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