Flutter API文档展示插件shelf_swagger_ui的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter API文档展示插件shelf_swagger_ui的使用

使用 shelf_swagger_ui 插件可以方便地在Flutter项目中展示API文档。以下是完整的使用步骤和示例代码。

示例

获取YAML或JSON模式文件

首先,创建一个名为 swagger.yaml 的文件,并添加以下内容:

openapi: 3.0.0
info:
  description: "API系统"
  version: "1.0.10"
  title: "Swagger测试"
servers:
  - url: http://my-service.info
    description: 远程服务器
tags:
- name: "用户"
  description: "访问用户信息"

配置Handler

接下来,在你的Dart项目中配置 shelf 处理程序,以便展示Swagger UI。以下是完整的代码示例:

import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_swagger_ui/shelf_swagger_ui.dart';

void main(List<String> args) async {
  // 指定YAML文件路径
  final path = 'specs/swagger.yaml';
  
  // 创建SwaggerUI处理程序
  final handler = SwaggerUI(path, title: 'Swagger测试');

  // 启动HTTP服务器
  var server = await io.serve(handler, '0.0.0.0', 4001);

  // 打印服务地址
  print('Serving at http://${server.address.host}:${server.port}');
}

运行项目

确保你已经安装了所需的依赖包,然后运行上述代码。你可以通过浏览器访问以下URL来查看生成的Swagger UI:

http://localhost:4001

更多关于Flutter API文档展示插件shelf_swagger_ui的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter API文档展示插件shelf_swagger_ui的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用shelf_swagger_ui插件来展示Swagger API文档的示例代码。shelf_swagger_ui通常用于Dart后端项目,而不是Flutter前端项目,但我可以展示如何在Dart后端项目中集成它,以便与Flutter前端或其他客户端交互。

首先,确保你的Dart项目已经设置好,并且你有一个使用shelf库的简单服务器。接下来,我们将添加shelf_swagger_ui来展示Swagger UI。

1. 添加依赖

在你的pubspec.yaml文件中添加以下依赖:

dependencies:
  shelf: ^1.0.0
  shelf_router: ^1.0.0
  shelf_swagger: ^1.0.0 # 假设你有一个API定义文件
  shelf_swagger_ui: ^1.0.0 # 用于展示Swagger UI

然后运行flutter pub get(或dart pub get,取决于你的项目类型)来安装依赖。

2. 定义你的API

创建一个api.dart文件来定义你的API端点。这里我们假设你有一个简单的REST API:

import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';

Router getRouter() {
  final router = Router();

  router.get('/hello', (Request request) {
    return Response.ok('Hello, World!');
  });

  // 添加更多API端点...

  return router;
}

3. 配置Swagger

创建一个swagger.dart文件来配置Swagger:

import 'package:shelf_swagger/shelf_swagger.dart';

final apiDocs = Swagger.fromYamlString('''
swagger: "2.0"
info:
  title: "Simple API"
  description: "A simple API to demonstrate Swagger integration"
  version: "1.0.0"
host: "localhost:8080"
basePath: "/"
schemes:
  - "http"
paths:
  /hello:
    get:
      summary: "Say hello"
      responses:
        200:
          description: "Successful response"
          schema:
            type: "string"
''');

4. 集成Swagger UI

在你的main.dart(或服务器启动文件)中,集成shelfshelf_routershelf_swagger_ui

import 'dart:io';

import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';
import 'package:shelf_swagger_ui/shelf_swagger_ui.dart';
import 'api.dart';
import 'swagger.dart';

void main() {
  final router = getRouter();

  var handler = createSwaggerUiHandler(
    swaggerDoc: apiDocs,
    basePath: '/swagger', // Swagger UI的访问路径
    apiDocsPath: '/api-docs', // JSON API文档的访问路径
  );

  var pipeline = const Pipeline().addMiddleware(logRequests());

  var app = Router()
    ..addRoute(handler.swaggerUiPath, handler.swaggerUiHandler)
    ..addRoute(handler.swaggerDocPath, handler.swaggerDocHandler)
    ..addAll(router.routes);

  var server = await HttpServer.bind(InternetAddress.anyIPv4, 8080);
  print('Serving at http://${server.address.host}:${server.port}');
  server.listen((request) => pipeline.handleRequest(request).then((response) => response.close()));
}

5. 运行你的服务器

现在,你可以运行你的Dart服务器。打开浏览器并访问http://localhost:8080/swagger,你应该能够看到Swagger UI,展示了你的API文档。

这个示例展示了如何在Dart后端项目中集成shelf_swagger_ui来展示Swagger API文档。虽然这不是一个Flutter前端项目,但Flutter前端可以通过这个API与后端进行交互。希望这对你有所帮助!

回到顶部