2
0
فهرست منبع

增加 swagger 支持

yourname 6 ماه پیش
والد
کامیت
83a0013ab3
3فایلهای تغییر یافته به همراه49 افزوده شده و 0 حذف شده
  1. 2 0
      package.json
  2. 2 0
      src/server/index.tsx
  3. 45 0
      src/server/swagger.ts

+ 2 - 0
package.json

@@ -11,7 +11,9 @@
   "dependencies": {
     "@hono/node-server": "^1.14.3",
     "@hono/react-renderer": "^1.0.1",
+    "@hono/swagger-ui": "^0.5.1",
     "@hono/vite-dev-server": "^0.19.1",
+    "@hono/zod-openapi": "^0.19.7",
     "@hono/zod-validator": "^0.4.3",
     "hono": "^4.7.6",
     "react": "^19.1.0",

+ 2 - 0
src/server/index.tsx

@@ -1,10 +1,12 @@
 import { Hono } from 'hono'
 import { renderer } from './renderer'
 import api from './api'
+import swagger from './swagger'
 
 const app = new Hono()
 
 app.route('/api', api)
+app.route('/swagger', swagger)
 
 app.use(renderer)
 

+ 45 - 0
src/server/swagger.ts

@@ -0,0 +1,45 @@
+import { OpenAPIHono, createRoute, z } from '@hono/zod-openapi'
+import { swaggerUI } from '@hono/swagger-ui'
+
+const app = new OpenAPIHono()
+
+app.openapi(
+  createRoute({
+    method: 'get',
+    path: '/hello',
+    responses: {
+      200: {
+        description: 'Respond a message',
+        content: {
+          'application/json': {
+            schema: z.object({
+              message: z.string(),
+            }),
+          },
+        },
+      },
+    },
+  }),
+  (c) => {
+    return c.json({
+      message: 'hello',
+    })
+  }
+)
+
+app.get(
+  '/ui',
+  swaggerUI({
+    url: '/swagger/doc',
+  })
+)
+
+app.doc('/doc', {
+  info: {
+    title: 'An API',
+    version: 'v1',
+  },
+  openapi: '3.1.0',
+})
+
+export default app