HTTPステータスコードのテスト (httpstatus on Azure App Service)
VS で https://github.com/Readify/httpstatus を clone して Azure App Service で動作させ、HTTPステータスコードのテストに使用するだけの簡単な作業を行いました。
わざわざ記事にする内容ではないのですが、VSで非常に簡単にでき、便利さを実感したのであえて備忘録を作りました。
ちなみに、わざわざ Azure にデプロイせずとも
httpstat.us
から同じサービスにアクセスできるので、本記事の手順は Azure への Publish を VS からやってみた以上の意味はありません。
環境
- Microsoft Windows 10 Pro (Azure VM で稼働)
- Microsoft Visual Studio Community 2019 (Version 16.2.3)
VSでの作業
ソリューションを開くまで
Clone or check out code
ソリューションを開くまで
Clone or check out code
Teapot.sln
Teapot.sln をダブルクリックして開いたら、Teapot.Web プロジェクトのコンテクストメニューから Publish を選択します。
(Teapot なんて名前がついている理由はわかりません。418 I'm a teapotが由来でしょうか?)
Azure App Service へのデプロイ
Publish
Azure App Service の target に対して、 Create New を選択して、 Publish します。
Name, Subscription, Resource group, Hosting Plan などを必要に応じて変更し、 Create ボタンですぐに開始できます。
表示
ブラウザで https://teapotweb____.azurewebsites.net/
(実際の Azure App Service の URL を指定します)にアクセスすると、下記のようなページが表示されます。
URL のパスを 200 , 403 , 500 などに変更して各種ステータスコードの応答を得ることができます。
curl でテスト
curl --head -XGET https://teapotweb____.azurewebsites.net/404
HTTP/1.1 404 Not Found
Cache-Control: private
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.1
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
...
Node.js + Axios でテスト
curl --head -XGET https://teapotweb____.azurewebsites.net/404
HTTP/1.1 404 Not Found
Cache-Control: private
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.1
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
...
あらかじめ npm で axios を install しておきます。
次のような簡易スクリプトでGETリクエストをテストします。
// Usage: AZEP=https://https://teapotweb____.azurewebsites.net node index.js CODE SLEEP_MSEC
// E.g. AZEP=https://https://teapotweb____.azurewebsites.net node index.js 200 1000
// Axios timeout can be tested by setting SLEEP_MSEC greater than 10000.
if (require.main === module) {
const code = process.argv[2];
const msec = process.argv[3];
const client = require("axios").create({
baseURL: (process.env["AZEP"] || "http://localhost:8080"),
timeout: 10000,
headers: {"Content-Type": "application/json"}
});
const params = {
params: (!!msec ? { sleep: msec } : {})
};
client.get(code, params).then((resp) => {
console.log({
status: resp.status,
statusText: resp.statusText,
contentLength: resp.headers["content-length"],
data: resp.data
});
}).catch((e) => {
if (!!e.response) {
console.error("ERROR", {
status: e.response.status,
statusText: e.response.statusText,
contentLength: e.response.headers["content-length"],
data: e.response.data
});
} else {
console.error("AXIOS ERROR", e.message);
}
});
}
実行例
AZEP=https://teapotweb____.azurewebsites.net/ node index.js 200 1000
{
status: 200,
statusText: 'OK',
contentLength: '34',
data: { code: 200, description: 'OK' }
}
ステータスコード300番以上の指定でエラーの扱いとなり axios の catch で処理されます。
AZEP=https://teapotweb____.azurewebsites.net/ node index.js 404
ERROR {
status: 404,
statusText: 'Not Found',
contentLength: '41',
data: { code: 404, description: 'Not Found' }
}
References
Author And Source
この問題について(HTTPステータスコードのテスト (httpstatus on Azure App Service)), 我々は、より多くの情報をここで見つけました https://qiita.com/shinaisan/items/3ff8fde053a7834b1bf3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .