asp.net core webapi

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

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。 好きなことだけ拾って投稿しているので、内容にはあまり期待しないでねw
カテゴリー: asp.net core, C#, dotnetcore, 技術系 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください