How Laravel Swagger generates documentation
masterLaravel Swagger generates REST API documentation by observing your PHPUnit tests. It extracts information from your Request classes and Controller methods during test execution.
To ensure documentation is captured correctly:
- Use FormRequests: Define validation rules in the
rules()method of aFormRequestclass. The plugin uses these rules to describe input parameters. - Use Dependency Injection: Inject the Request class into your controller methods. If you don't use dependency injection, the "Parameters" block in the documentation will be empty.
- Write Feature Tests: Create tests that hit your API endpoints (e.g., using
$this->json(...)). The plugin intercepts these requests to build the spec. - Run Tests: The documentation is built during the test run.
// 1. Request with rules
class UpdateUserDataRequest extends FormRequest {
public function rules() {
return ['name' => 'string', 'age' => 'integer'];
}
}
// 2. Controller using DI
class UserController extends Controller {
public function update(UpdateUserDataRequest $request) {
return response('', 204);
}
}
// 3. Test to trigger documentation generation
public function testUpdate() {
$this->json('put', '/users/1', ['name' => 'New Name']);
}