swaggerを用いたスタブ作成 

ローカルスタブを作成する手順
# node.jsをインストールする
Windowsなのでこれを参考にしたが…、
https://qiita.com/taiponrock/items/9001ae194571feb63a5e
Linuxならyumでよいと思う。

```
$ sudo yum install epel-release
$ sudo yum install nodejs
$ node -v
v0.10.32
```

# Gitをインストールする。
省略

# Swagger Editorをインストールする。
 NDAなどに引っかかる場合は、https://editor.swagger.io/ は利用できないため。 
Windowsだとgit bashを開き以下コマンド。(よく考えたら、linuxでも一緒だな。)

```
$ git clone https://github.com/swagger-api/swagger-editor.git
$ cd swagger-editor/
$ npm install
$ npm start
```

### 補足
npm install時にnode-gyp周りでエラーになる場合は、以下を参照すること。
https://qiita.com/AkihiroTakamura/items/25ba516f8ec624e66ee7
これに加え、私の場合はpython3.6が別件で既にinstallされていたので、3.6は一旦uninstallする必要があった…。

### インストールログ

```
PC MINGW64 ~
$ git clone https://github.com/swagger-api/swagger-editor.git
Cloning into 'swagger-editor'...
remote: Counting objects: 32385, done.
remote: Total 32385 (delta 0), reused 0 (delta 0), pack-reused 32385
Receiving objects: 100% (32385/32385), 130.69 MiB | 3.21 MiB/s, done.
Resolving deltas: 100% (18224/18224), done.

PC MINGW64 ~
$ cd swagger-editor/

PC MINGW64 ~/swagger-editor (master)
$ npm install
npm WARN deprecated react-file-download@0.3.5: WARNING: This project has been renamed to js-file-download. Use js-file-download instead.
(省略)
PC MINGW64 ~/swagger-editor (master)
$ npm start

> swagger-editor@3.1.12 prestart C:\Users\hoge\swagger-editor
> npm install

swagger-editor@3.1.12 C:\Users\hoge\swagger-editor
+-- UNMET PEER DEPENDENCY react@15.6.2
`-- swagger-ui@3.4.0
  +-- brace@0.7.0
  +-- reselect@2.5.3
  +-- UNMET PEER DEPENDENCY webpack@^2.2.0
  `-- yaml-js@0.2.0

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN commonmark-react-renderer@4.3.3 requires a peer of commonmark@^0.27.0 || ^0.26.0 || ^0.24.0 but none was installed.
npm WARN eslint-config-standard@6.2.1 requires a peer of eslint@>=3.8.1 but none was installed.
npm WARN eslint-config-standard-jsx@3.2.0 requires a peer of eslint@>=3.0.0 but none was installed.
npm WARN eslint-plugin-standard@2.0.1 requires a peer of eslint@>=3.0.0 but none was installed.
npm WARN react-addons-shallow-compare@0.14.8 requires a peer of react@^0.14.8 but none was installed.
npm WARN react-object-inspector@0.2.1 requires a peer of react@^0.14.0 but none was installed.
npm WARN webpack-dev-server@2.5.0 requires a peer of webpack@^2.2.0 but none was installed.

> swagger-editor@3.1.12 start C:\Users\hoge\swagger-editor
> npm-run-all --parallel serve-static open-static


> swagger-editor@3.1.12 serve-static C:\Users\hoge\swagger-editor
> http-server -i -a 0.0.0.0 -p 3001


> swagger-editor@3.1.12 open-static C:\Users\hoge\swagger-editor
> node -e 'require("open")("http://localhost:3001")'

Starting up http-server, serving ./
Available on:
  http://192.168.60.60:3001
  http://127.0.0.1:3001
Hit CTRL-C to stop the server
```
# swaggerエディタでyamlから出力を行う。
まずはAPIのyamlを入手

### swagger editorを起動
上記例でいうと、htp://127.0.0.1:3001にアクセス。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/115285/8c9e2c4e-8a6f-ed0d-d0dd-64b36ff3d08a.png)

### editor上からServerStubを作成
GenerateServer→nodejsserver
![image.png](https://qiita-image-store.s3.amazonaws.com/0/115285/bb4ca9fa-cf18-802e-e406-017429e93b9d.png)

# 作成したServerStubからnode.jsを起動
zipファイルを解凍し、配置。
git bash(でもコマンドプロンプトでもなんでもいいが) を起動して、当該ディレクトリに移動して
$npm startを実行

```
 MINGW64 ~/stub/nodejs-server-server
$ npm start

> swagger-petstore@1.0.0 prestart C:\Users\hoge\stub\nodejs-server-server
> npm install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 147 packages from 80 contributors and audited 400 packages in 24.937s
found 4 vulnerabilities (2 low, 1 moderate, 1 high)
  run `npm audit fix` to fix them, or `npm audit` for details

> swagger-petstore@1.0.0 start C:\Users\hoge\stub\nodejs-server-server
> node index.js

Your server is listening on port 8080 (http://localhost:8080)
Swagger-ui is available on http://localhost:8080/docs

 MINGW64 ~/stub/nodejs-server-server
```
# SwaggerUIを立ち上げる。
localhost:8080/docsにアクセス。APIドキュメントやお試しリクエストなどはこれでわかる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/115285/59caa474-edf7-5e3c-9d4c-379a591ad31a.png)

これでローカル側でスタブが立ち上がったので、スタブURLをこのURL(localhost:8080)に設定。