GO言語で作成しております。
いろいろな開発においてAPIへのアクセスやテスト等で自分自身がほしいな〜と思ったスタブサーバを作成しました。
- 特定URLからローカルファイルを転送します。
- 特定URLから情報を別サーバへ転送します。
- リクエスト、レスポンスの内容をファイル出力します。
- URLだけでなくヘッダ、ボディの内容でフィルタリングも可能です。
Setting.json
の内容を編集します。
アクセスを全て/user/hoge/webroot/
配下のローカルファイルのアクセスに変換する。
正規表現で対応します。
{
"convertList": [
{
"srcURL" : "/(.*)",
"destPath" : "/user/hoge/webroot/$1"
}
]
}
/
へのアクセスにindex.html
を返却する。その他は上記と同じに。
上から順に処理されていくため、優先するものは上位に設定します。�
{
"convertList": [
{
"srcURL" : "/",
"destPath" : "/user/hoge/webroot/index.html"
},
{
"srcURL" : "/(.*)",
"destPath" : "/user/hoge/webroot/$1"
}
]
}
ファイルに別途ContentTypeを指定する。
index.html
の場合Content-Type: application/octet-stream
が指定される。
省略時はContentTypeList.json
から拡張子で自動で設定されます。
{
"convertList": [
{
"srcURL" : "/",
"destPath" : "/user/hoge/webroot/index.html",
"contentType" : "application/octet-stream"
},
{
"srcURL" : "/(.*)",
"destPath" : "/user/hoge/webroot/$1"
}
]
}
アクセスを全てhttp://192.168.1.10:9999/
に転送する。
{
"convertList": [
{
"srcURL" : "/(.*)",
"destURL" : "http://192.168.1.10:9999/$1"
}
]
}
/hoge/
の場合ローカルファイルにアクセスする。その他は上記と同じに。
{
"convertList": [
{
"srcURL" : "/hoge/(.*)",
"destPath" : "/user/hoge/webroot/$1"
},
{
"srcURL" : "/(.*)",
"destURL" : "http://192.168.1.10:9999/$1"
}
]
}
文字コードがutf-8ならばローカルファイルにアクセスし、それ以外は別サイトへ転送する(フィルタリングの正規表現は適当です)。
{
"convertList": [
{
"srcURL" : "/(.*)",
"destPath" : "/user/hoge/webroot/$1",
"filterList" : [
{
"type" : "header",
"condition" : "Content-Type: ([\\S]+); charset=utf-8"
}
]
},
{
"srcURL" : "/(.*)",
"destURL" : "http://192.168.1.10:9999/$1"
}
]
}
文字コードがutf-8でボディ情報がOK
ならばローカルファイルにアクセスし、それ以外は別サイトへ転送する(フィルタリングの正規表現は適当です)。
{
"convertList": [
{
"srcURL" : "/(.*)",
"destPath" : "/user/hoge/webroot/$1",
"filterList" : [
{
"type" : "header",
"condition" : "Content-Type: ([\\S]+); charset=utf-8"
},
{
"type" : "body",
"condition" : "OK"
}
]
},
{
"srcURL" : "/(.*)",
"destURL" : "http://192.168.1.10:9999/$1"
}
]
}
現在type
に指定できるのはheader
とbody
のみです。
ポートを9999に設定する。(デフォルトは8080)
> QStubServer -port 9999
Setting.json
のパスを指定する。(デフォルトは[カレントディレクトリ]+Setting.json
)
> QStubServer -setting /usr/hoge/QStubServer/Setting.json
ContentTypeList.json
のパスを指定する。(デフォルトは[カレントディレクトリ]+ContentTypeList.json
)
> QStubServer -contenttype /usr/hoge/QStubServer/ContentTypeList.json
リクエスト、レスポンス内容をファイルに出力する。
/usr/hoge/QStubServer/log
配下へ内容を出力します。
> QStubServer -outputlog /usr/hoge/QStubServer/log
このライブラリのビルドは
https://github.com/constabulary/gb
で行っております。