จะจัดทำเอกสาร nodejs API ที่มีอยู่ได้อย่างไร

ยังใหม่กับ Node และรู้สึกหงุดหงิดกับไลบรารี่หลายแห่งที่ทำสิ่งเดียวกัน ฉันกำลังจะไม่ไปไหน

ฉันมีแอปพลิเคชัน Node + express อยู่แล้ว และจำเป็นต้องรวมเอกสารผยอง เธรดที่มีประโยชน์ที่สุดที่ฉันพบคืออันนี้ แต่คาดว่าจะมีไฟล์ api-docs.json แบบขนาน สิ่งนี้ไม่ได้ถูกสร้างขึ้นโดยอัตโนมัติ

ฉันต้องการจัดทำเอกสาร API แต่ละรายการในคอนโทรลเลอร์ และต้องการสร้างเอกสาร ใครสามารถชี้ให้ฉันไปที่แหล่งข้อมูลที่ดีกว่านี้ได้ไหม


person sidgate    schedule 14.11.2016    source แหล่งที่มา
comment
การขอคำแนะนำอยู่นอกหัวข้อใน SO ลองยืนกรานในแนวทางและถามเมื่อคุณพบปัญหาเฉพาะแล้ว   -  person E_net4 the curator    schedule 14.11.2016
comment
คุณสามารถใช้ apidocjs.com นี้สำหรับเอกสารประกอบ ฉันไม่ได้ใช้ add this เป็นคำตอบเนื่องจากนี่เป็นคำตอบที่ดีมาก คำถามที่ดื้อรั้น   -  person AJS    schedule 14.11.2016


คำตอบ (1)


ในที่สุดฉันก็สามารถทำให้มันใช้งานได้กับ swagger-jsdoc

ขั้นตอน

  • เพิ่มแพ็กเกจ Swagger-UI
  • เพิ่มการพึ่งพาผยอง-ui

    npm install -g swagger-ui

  • กำหนดค่าผยองในไฟล์ server.js ของคุณ

    var swaggerJSDoc = require('swagger-jsdoc'); var options = { swaggerDefinition: { info: { title: 'Hello World', // Title (required) version: '1.0.0', // Version (required) }, }, apis: ['./routes.js'], // Path to the API docs }; var swaggerSpec = swaggerJSDoc(options); app.get('/api-docs.json', function(req, res) { res.setHeader('Content-Type', 'application/json'); res.send(swaggerSpec); }); app.use('/api/docs',express.static('./node_modules/swagger-ui/dist'));

  • เพิ่มความคิดเห็นที่ผยองให้กับฟังก์ชันคอนโทรลเลอร์ของคุณ

/** * @swagger * resourcePath: /api * description: All about API */

/** * @swagger * /login: * post: * description: Login to the application * produces: * - application/json * parameters: * - name: username * description: Username to use for login. * in: formData * required: true * type: string * - name: password * description: User's password. * in: formData * required: true * type: string * responses: * 200: * description: login */ app.post('/login', function(req, res) { res.json(req.body); });

person sidgate    schedule 15.11.2016