前回の「ASP.NET Core を使用して Web UI を作成する」の続き。今回は「ASP.NET Core コントローラーを使用して Web API を作成する」をやってみた。
シナリオ
今回のシナリオは会社のWebネットショップとモバイルアプリケーションの前提条件として、ピザインベントリ管理用の RESTful サービス(ピザの種類の追加、表示、変更、削除)を開発するように依頼されたという内容。
(前回ほどはこのシナリオが色濃く登場はしなかった)
面白い点
.NET HTTP REPL を使用した Web API のテストにあるように、
ブラウザでURLを叩かなくても、コマンドラインからAPIの結果を確認できた。
下記のようなコマンドでWeb APIに接続。
httprepl https://localhost:{PORT}/
以降はコマンドプロンプトみたいな感覚で試せる。例えば、下記のようなコマンドでディレクトリ(エンドポイント)を移動できる。
cd WeatherForecast
GETの要求を実行した結果は下記のように表示される
コマンドで試せるということは自動テストが試しやすい。
つまずいた点
HTTPSにアクセスできない
dotnet runを実行すると、下記のように表示されるらしい。しかし、僕のコマンドラインには、https://localhost:7294の行はなかった。
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7294
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5118
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Stackoverflowによると、
下記の2通りで解決
2つ目の具体例はこんな感じ
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7259;http://localhost:5119",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5119",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
httpreplでWebへの接続
チュートリアルでは、
httprepl https://localhost:{PORT}
と書かれているが、これだけでは接続できなかった。最後にスラッシュが必要
httprepl https://localhost:{PORT}/
httpreplでパラメータを渡す
GETでidに1を渡すには、ブラウザだと下記のように実行できる。
https://localhost:7259/pizza/1
これをコマンドで実行する方法がわからなかったが...
読み進めたら普通に書いてあった。以下2通りで実行できた。
https://localhost:7259/> get pizza/1
https://localhost:7259/Pizza> get 1
まとめ
今回は不明点は特になかった。こんな簡単な記述でWeb APIが実装できるのかと関心したのと、コマンドラインでAPIを試せるのが面白かった。