source

기존 노드에 대한 스웨거 문서 생성JS 서버

ittop 2023. 7. 6. 22:46
반응형

기존 노드에 대한 스웨거 문서 생성JS 서버

Swagger 웹사이트에 따르면, 두 가지 접근법이 있습니다: 상향식과 하향식.

기존 노드가 있습니다.Azure 환경에 배치하고 싶은 JS 서버로 Swagger 문서(API APP)가 필요합니다.

코드를 사용하여 스웨거를 생성하는 도구를 아는 사람이 있습니까?당신이 튜토리얼을 가리킬 수 있다면 훨씬 더 좋습니다.저는 그것을 찾을 수 없었어요.

질문이 좀 오래되었지만 여전히 그렇습니다.다음과 같은 분석 미들웨어를 내장하는 것만으로도 완전 자동 스웨거(OpenAPI) 사양 생성이 가능합니다: https://github.com/mpashkovskiy/express-oas-generator

const express = require('express');    
const expressOasGenerator = require('express-oas-generator');
let app = express();
expressOasGenerator.init(app, {});

서비스에 대해 일부 클라이언트 또는 REST API 테스트를 실행하고 http://host:port/api-docs를 엽니다.

튜토리얼을 따라 스웨거를 기존 익스프레스 애플리케이션에 통합하는 것은 어렵지 않습니다.

일반적으로 다음 단계를 수행할 수 있습니다.

  1. 종속성을 당사에 추가합니다.package.json그리고 실행npm install설치할 수 있습니다.종속성은 다음과 같아야 합니다.

    "dependencies": {
            "swagger-node-express": "~2.0",
            "minimist": "*",
            "body-parser": "1.9.x",
            ...
    }
    
  2. Swagger-UI의 zip 프로젝트를 다운로드하고 복사합니다.dist폴더를 프로젝트의 루트 디렉터리에 저장합니다. 디렉터리는 거의 다음과 같아야 합니다.

enter image description here

  1. 다음의 시작 부분에 종속성을 소개합니다.app.js:

    var argv = require('minimist')(process.argv.slice(2));
    var swagger = require("swagger-node-express");
    var bodyParser = require( 'body-parser' );
    
  2. Swagger 문서에 대한 하위 경로 설정:

    var subpath = express();
    app.use(bodyParser());
    app.use("/v1", subpath);
    swagger.setAppHandler(subpath);
    
  3. 반드시/dist는 다음과 같은 형식으로 정적 파일을 처리할 수 있습니다.app.use(express.static('dist'));

  4. API에 대한 정보를 설정합니다.

    swagger.setApiInfo({
        title: "example API",
        description: "API to do something, manage something...",
        termsOfServiceUrl: "",
        contact: "yourname@something.com",
        license: "",
        licenseUrl: ""
    });
    
  5. 소개하다/dist/index.html스웨거 UI의 경우:

    subpath.get('/', function (req, res) {
        res.sendfile(__dirname + '/dist/index.html');
    });
    
  6. 스웨거 구성을 완료합니다.

    swagger.configureSwaggerPaths('', 'api-docs', '');
    
    var domain = 'localhost';
    if(argv.domain !== undefined)
        domain = argv.domain;
    else
        console.log('No --domain=xxx specified, taking default hostname "localhost".');
    var applicationUrl = 'http://' + domain;
    swagger.configure(applicationUrl, '1.0.0');
    
  7. 문서 파일 종속성 구성/dist/index.html:

    if (url && url.length > 1) {
        url = decodeURIComponent(url[1]);
    } else {
        <del>url = "http://petstore.swagger.io/v2/swagger.json";</del>
        url = "/api-docs.json";
    }
    
  8. 만들다api-docs.json당신의 API 정보를 파일로 작성하고, 그것을 에 넣습니다.dist폴더를 누릅니다.

로컬에서 Express 앱 실행, 방문http://localhost:3000/v1우리는 스웨거 문서를 확인할 수 있습니다.

당신이 참고할 수 있도록 제 테스트 샘플 레포 샘플입니다.

제가 알기로는 다음과 같은 옵션이 있습니다.

  1. 제 생각에는 매우 번거로운 스웨거 노드 익스프레스를 사용하는 것입니다.
  2. SO 답변에서 제안한 대로 스웨거 편집기의 도움을 받아 직접 스웨거 문서를 작성합니다.

옵션 2로 이동하면 swagger-ui-express를 사용하여 swagger-ui를 생성할 수 있습니다.

많은 개발자들이 여전히 이 문제를 겪고 있기 때문에 저는 도움을 주기 위해 오픈 소스 도구를 만들었습니다. 이 도구는 일종의 Git for APIs와 비슷합니다.API를 개발하는 동안 프록시를 실행하여 트래픽을 분석하고 API의 동작이 변경되면 사양을 업데이트합니다.워크플로우를 통해 많은 시간을 절약할 수 있기를 바랍니다. https://github.com/opticdev/optic

대부분의 대안은 Json, Yaml 또는 JSdocs에 내장된 API 사양을 필요로 합니다.반면에 HTTP 요청을 가로채고 주문형으로 사양을 구축하는 런타임 분석기가 있습니다.

express-sitemap-map은 설정 시 Express 개체와 해당 경로를 검사하는 다른 접근 방식을 따릅니다.따라서 항상 기존 익스프레스 인스턴스에 설치된 경로에 대한 최신 스웨거 UI를 제공합니다.

const sitemap = require('express-sitemap-html')
...
sitemap.swagger('Title', app) // app is an express instance

ㅠㅠㅠㅠㅠㅠㅠ UI ㅠㅠㅠ/api-docs.

언급URL : https://stackoverflow.com/questions/33534488/generate-swagger-document-for-existing-nodejs-server

반응형