ASP.NET CoreにはRESTful Web APIを作成するためのテンプレートが用意されている。
作成するには以下のように、プロジェクトテンプレートとして、webapiを指定する。
dotnet new webapi -o プロジェクトフォルダ
ASP.NET CoreのWeb APIはhttp要求を受け取って、結果をJSON形式で返す。
APIの実装にはhttp要求のメソッド毎に呼び出すインスタンスメソッドを定義するだけで良い。
簡単な例
プロジェクトフォルダ下のControllersフォルダに<コントローラ名>Controller.csと言う形でファイルを作成すると、”http://・・・/UserInfo”というURLを持つWeb APIが作成される。
UserInfoController.cs
namespace WebAPITest.Controllers
{
[ApiController] // APIコントローラであることを宣言
// ルーティングを設定
// この例では、http://・・・/UserInfo [controller]はクラス名から
// Contrllerを取り除いたものに置換される
// 仮想ディレクトリの階層を変える事も可能。例えば、apiの下
// (http://・・・/api/UserInfo)としたければ、
// [Route("api/[controller]")]
// コントローラ名と全く異なるURLにする事も可能
[Route("[controller]")]
public class UserInfoController : ControllerBase
{
// パラメータ無しGETの処理
// http://・・・/UserInfo/
[HttpGet]
public List<UserInfoItem> GetUserList()
{
// ユーザー情報リストを取得
var lst = ・・・.ToList();
return lst; // 自動的にJSONに変換される
}
// パラメータidありの処理。
// 例 GET http://・・・/UserInfo/5
[HttpGet("{id}")]
public UserInfoItem GetUserInfo(int id)
{
// 指定されたIDを持つユーザー情報を取得
var u = ・・・・.FirstOrDefault();
if (u == null) {
// ControllerBaseに定義されている。
// HTTPヘッダ Status 404: Not Foundを返す
return NotFound();
} else {
return u; // 自動的にJSONに変換される
}
}
}
}
この例ではGETリクエストのみだが、POSTやPUT,DELETEも実装可能。
例えば、[HttpDelete(“{id}”)]のような属性を付けると、
DELETE /UserInfo/5
のようなURLをハンドリングするメソッドとなる。
(通常は削除要求処理を実装だよね)
以上のようにかなり簡単にRESTful Web APIが実装できる。
詳しくは下記URLを参照
https://docs.microsoft.com/ja-jp/aspnet/core/web-api/?view=aspnetcore-3.1