LoginSignup
2
2

More than 3 years have passed since last update.

「たった30秒でREST APIのモックが作れ」なかった話

Last updated at Posted at 2019-11-09

こんにちは、wattak777です。

必要に迫られREST APIを受け付けられるダミーサーバを作ることになりまして、出来るだけ手抜きで効率よく構築する手段はないものか、と構築しようとして手抜きの目論見がバレたのか少々ハマった話を展開しておきます。

当初手持ちのPCがWindows 10だったためLinuxをDockerかVirtualBoxに入れてやるか、と考えていたのですが、あまりしゃっちこばらず簡単に出来ないものか、と色々探して出てきたのがこれ(google先生は本当に便利ですね)。

JSON ServerでRestAPIのモックを作成した話

ここに書いてあるようにNode.jsをインストールし、npmでjson-serverを入れ、

db.json
{
  "API_test": 
  {
    "param1": "Apple", 
    "param2": "Orange"
  }
}
route.json
{
  "/api/test/mock/v1/API_test": "/API_test"
}

これらを組み、

C:\work\Dummy_Rest> json-server db.json --routes route.json -p 12345

とすることで別途DOSプロンプトより

C:\test> curl http://localhost:12345/API_test

コールすると無事取れたのですが、問題はここから。
本来はLAN上の別のPCから取ってくる仕組みが欲しかったので、このページに書いてあったserver.jsをくみ上げ、

server.js
const jsonServer = require('json-server') ;
const server = jsonServer.create() ;
const router = jsonServer.router('db.json') ;
const middlewares = jsonServer.defaults() ;

server.use(jsonServer.rewriter({
  "/api/test/mock/v1/API_test": "/API_test"
}))

server.use(middlewares) ;

server.use(router) ;
server.listen(12345, function() {
  console.log('Dummy REST API is running.');
}) ;

とやっていざ実行。

C:\work\Dummy_Rest> node server.js
module.js:472
    throw err;
    ^

Error: Cannot find module 'json-server'
    at Function.Module._resolveFilename (module.js:440:15)
    at Function.Module._load (module.js:388:25)
    at Module.require (module.js:468:17)
        :(以下略)

ん?あれ?
で、色々調べてたら、コレがヒントに。

Cannot find module 'json-server' #454

要はnpmで取ってきたjson-serverのパスがNODE_PATHに当たっていなかったってことか。
ってことで、改めて環境変数を取ることに。

C:\work\Dummy_Rest> npm root -g
C:\Users\wattak\AppData\Roaming\npm\node_modules
C:\work\Dummy_Rest> set NODE_PATH=C:\Users\wattak\AppData\Roaming\npm\node_modules

その後 node コマンドによる global.module.paths で上記設定されたパスが入っていることを確認すると。。。

C:\work\Dummy_Rest> node server.js
Dummy REST API is running.

と、無事起動しましたとさ。

もちろん、node.exeに対してのファイアウォール設定は大丈夫ですよね?
これがないと、他のPCからC:\ClientPC> curl http://192.168.1.1:12345/API_testとやってもつながらないのでお気をつけアレ。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2