LoginSignup
8

More than 1 year has passed since last update.

C#で簡単なWebAPIサービスを作成する

Last updated at Posted at 2023-01-07

1. はじめに

  • OpenAPIver3に対応したAPIを開発したい
  • C# ASP.NETCore WebAPIを使用したい
  • Swaggerで動作検証をしたい

2. 開発環境

  • Visual Studio 2022
  • .NET6 (ASP.NET Core)
  • Windows11

3. Visual Studioで新規プロジェクトを作成する

  • WebAPIを呼び出すと本の情報を5件分取得できる簡単なサンプルを作成する

  • 「ASP.NET Core WebAPI」 を選択する

  • ASP.NETサービスがインストールされていない場合は別途Visual Struio インストーラーからインストールする
    image.png

  • ソリューション名/プロジェクト名は「WebApiServer」を設定する(任意)
    image.png

  • フレームワークは「.NET 6.0」を選択する
    image.png

4. コントローラーを追加する

  • 新しい項目を追加で、「APIコントローラー -空」 を追加する
    image.png
BooksController.cs
using Microsoft.AspNetCore.Mvc;

namespace WebAPI.Controllers
{
    [Produces("application/json")]
    [Route("api/Books")]
    public class BooksController : ControllerBase
    {
        private List<Models.Book> _lst;
        public BooksController() { 
            _lst = new List<Models.Book>();
            _lst.Add(new Models.Book { id = 1, title = "title1", price = 100, page = 10 });
            _lst.Add(new Models.Book { id = 2, title = "title2", price = 200, page = 20 });
            _lst.Add(new Models.Book { id = 3, title = "title3", price = 300, page = 30 });
            _lst.Add(new Models.Book { id = 4, title = "title4", price = 400, page = 40 });
            _lst.Add(new Models.Book { id = 5, title = "title5", price = 500, page = 50 });
        }

        // GET: api/Books
        [HttpGet]
        public IEnumerable<Models.Book> Get()
        {
            return _lst;
        }


        // GET: api/Books/5
        [HttpGet("{id}", Name = "Get")]
        public Models.Book Get(int id)
        {
            return _lst.FirstOrDefault(x =>x.id == id);
        }

        // POST: api/Books
        [HttpPost]
        public string Post([FromBody] Models.Book value)
        {
            return string.Format("post title:{0}", value.title);
        }

        // Put: api/Books/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
            // do nothing
        }

        // DELETE: api/ApiWithActions/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
            // do nothing
        }

    }
}

5. モデルを追加する

  • 新しい項目を追加で、「クラス」 を追加する
Book.cs
namespace Models
{
    public class Book
    {
        public int id { get; set; }
        public string title { get; set; }
        public int price { get; set; }
        public int page { get; set; }
    }
}

6. サンプルのWebAPIを起動する

  • 実行ボタンをクリックすると、Webブラウザ(Swagger)が立ち上がる
    image.png

  • GETメソッドの「Try it」>「Execute」ボタンをクリックすると、WebAPIが実行できる
    image.png

  • Responseに、WebAPIの呼び出し結果が表示される
    image.png

7. ソースコード

8. 参考文献

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8