in-house-swagger / in-house-swagger

in-house swagger-tools server

Home Page:https://in-house-swagger.github.io/in-house-swagger/index.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

swaggerのvalidatorがin-house化できていない

tkhr-sait opened this issue · comments

swagger-generatorをin-houseで起動したい
【事象】
画面最下部のvalidatorがうまく動作してない ERROR {...}
https://online.swagger.io/validator/debug?url=/api/swagger.json

swagger-ui環境(in-house化保留中)だと以下で動作して VALID {...}
https://online.swagger.io/validator/debug?url=http://petstore.swagger.io/api/swagger.json

【原因】
validator からurlを参照できないため

【対策】
https://online.swagger.io/validator もin-houseに持ってくる
https://github.com/swagger-api/validator-badge
もしくは消しちゃう
http://qiita.com/utisam/items/61e7551504bcf80854a5

動作確認、ありがとうございます!

なるほど。
swagger-uiの一番下に、そんなのが出てたんですねf(^_^;

こんな感じでどうでしょう?
個人的には案3かなと思ってます〜

  • 【前提】

    • generator.war内部のui
      • build時に、uiのgithub repoから最新をダウンロード&組み込みしているので、消すにしても何らか対応が必要そう。
        → それなら動くようにしようかと。
    • editor, ui のfork理由
      • 提供されているのがソースで、in-houseで使うなら、自分でbuildしてほしい仕組みに見える。
        → in-houseで提供するなら、build結果をダウンロードできるようにしておいた方が便利そう。
  • 【対応案1 - インストール時に考慮】

    • 対応内容
      • validator-badge の in-house module組み込み
      • ui の参照先変更
        • インストール時に、ファイルを書き換え
      • generator.ui の参照先変更
        • インストール時に、warを展開して利用するように変更
        • 展開したwarのuiで、ファイルを書き換え
    • メリット
      • forkで最新を追いかける対象が、最低限に抑えられる
    • デメリット
      • カスタマイズ方法が、場当たり的に増えそう
  • 【対応案2 - ビルド時に考慮】

    • 対応内容
      • validator-badge の in-house module組み込み ※対応案1と同じ
      • ui の参照先変更
        • forkしているリポジトリで、ファイルを書き換え
      • generator.ui の参照先変更
        • 新たにforkして、build時にダウンロード&組み込みするuiのリポジトリをforkしたものに変更
    • メリット
      • カスタマイズ方法が、swagger提供側が想定している方法っぽい。
    • デメリット
      • forkで最新を追いかける対象が、増える。
  • 【対応案3 - 折衷】

    • 対応内容
      • validator-badge の in-house module組み込み ※対応案1と同じ
      • ui の参照先変更 ※対応案2と同じ
      • generator.ui の参照先変更
        • インストール時に、warを展開して利用するように変更
        • 展開したwarのuiを、in-house ui に置き換え
    • メリット
      • forkで最新を追いかける対象が、最低限に抑えられる
    • デメリット
      • カスタマイズ方法が、ルール化できそう。

対応詳細

  • in-house-swagger
    moduleにvalidator.warを追加。
    http://central.maven.org/maven2/io/swagger/swagger-validator/1.0.4/swagger-validator-1.0.4.war

    • war展開方式
    • context pathは、/validator
  • ui
    src/standalone/layout.jsx で
    一番下に をrenderしている。

    <OnlineValidatorBadge validatorUrl='/validator' />

    とかでいけそう。

    • dist/index.html
      77行目の初期表示URL指定をin-house版にしたいが、spec-mgrの登録状況次第でURLが変わる。
      とりあえずspec-mgrのswagger.jsonを見せておく。
        let defaultSpecMgrHostname = window.location.hostname
        let defaultSpecMgrPort = eval(window.location.port) + 1
        let curSpecMgr = "http://" + 
            defaultSpecMgrHostname + ":" + 
            defaultSpecMgrPort
    
          url: curSpecMgr + '/api-docs'
  • generatorのui
    warを展開すると、直下がuiになっている。
    カスタマイズされているのは index.htmlでの初期表示URLだけっぽい。
    下記くらいの対応でいけそう。

    • まるっと in-house版ui で上書き or 差し替え
    • index.html の初期表示URLを、 'http://localhost:${SERVER_PORT}/api/swagger.json' 指定に置換
      ただ、localhost, 12.0.0.1だと、validatorが呼び出されないっぽいですf(^_^;
  • editorのui
    組み込み版で swagger-uiを利用している。
    validator-badgeは使われないので、対応なしでOK。

  • Done
    • in-house-swagger
      • validatorをmoduleに組み込む
      • bin/installでgenerator.warを展開
    • swagger-ui
      • validatorの呼び出し先を、組み込んだvalidatorに切り替える
      • 初期表示するspecを、spec-mgrのswagger.yamlに変更
  • ToDo

対応完了