12.2K Views
February 03, 24
スライド概要
ITネタなど
ASP.NET Core(C#)で作る Web APIサーバ&クライアント 2024/02/03 エ ン ジニアの輪 at 東京( 第14 回)
自己紹介 ⚫名前: ひろみ ⚫受託開発企業のソフト部門 ⚫言語: 入社3年目 C#, JavaScript, Kotlin, Pythonなど ⚫経験: Windowsアプリ(Form, WPF)、 Androidアプリ、Webアプリ、 通信(TCP/IP, HTTP)など ⚫趣味: 鳥グッズ、 音ゲー(プロセカ、DJMAX、CytusⅡ他)
内容 ⚫Web APIとは ⚫ASP.NET Coreとは ⚫作成するWeb APIとやることの全体像 ⚫Web APIサーバの作成 ⚫Web APIクライアントの作成 ⚫補足
Web APIとは ⚫API: あるソフトウェアとソフトウェアの機能を、仕様に則りつなぐIF ソフトウェアA ⚫Web API: 〇〇やってほしい!〇〇の情報がほしい! 実行結果、要求された情報 ソフトウェアB HTTPで、インターネット経由でリクエストやレスポンスに JSON (XML) 形式を用いてやりとりする。 ⚫OpenAPI: APIの記述に関する仕様(YAMLまたはJSON) ⚫Swagger: OpenAPIを使って文書化などができるツール
ASP.NET Core とは .NETとC#を使用してWebアプリとサービスを構築するための フレームワーク。 ※.NET Microsoftが提供するオープンソースアプリケーションプラットフォーム Visual StudioなどのIDEで使用できる ASP.NET Coreで作るWeb APIサーバ&クライアント ⇒ Visual StudioとC# で、HTTPでJSON形式のデータを やりとりするサーバとクライアントを作成する
今回作成する Web API ⚫APIサーバとAPIクライアント ⚫サーバ: Controllerベースの方 ←OpenAPIとSwaggerが使える! ⚫APIの内容 ⚫GETメソッド: GET /v1/reserved/id ⚫構成 リクエスト レスポンス パラメータ 項目名 パラメータ 項目名 Id 予約ID Id 予約ID reserved_at 予約日時 reserved_count 予約人数 reserved_amount 金額
やること&コード(最小限) サーバ 1. プロジェクトを作成する 2. API定義用のクラスと、 リクエスト受信→レスポンス送信を 行う関数を実装する クライアント 1. プロジェクトを作成する 2. サーバで生成されるOpenAPIの JSONファイルを読み込む 3. 2で自動生成されるコードを使って リクエスト処理を実装する
APIサーバを作る ⚫ASP.NET Core Web API でプロジェクトを作成する ⚫レスポンス用のAPI定義クラス(モデルクラス)と、 Web API要求の応答メソッドを作成する
APIサーバを作る モデルクラス レスポンス用のモデルクラスを作成 namespace: /Models/ReservedInfo パラメータ 項目名 id 予約ID reserved_at 予約日時 reserved_count 予約人数 reserved_amount 金額 ※POSTメソッドなどの場合は、 リクエスト用のモデルクラスも作成が必要 ※Entity Framework Coreの モデルクラスとしても使える ⇒ DB連携も楽!
APIサーバを作る 応答メソッド namespace: /Controllers/ReservedInfoController ※処理は割愛 後でクライアント側で使う 関数名 URI メソッド リクエストで受け取る値 応答 ※200以外も返せる (例: NotFound)
Swagger UI https://localhost:7156/swagger/v1/swagger.json
生成されるJSON
APIクライアントを作る ファイルの読み込み ※クラスライブラリでプロジェクト作成済み ソリューションを右クリック→追加→接続済みサービス 先ほどのJSONのURLと、生成されるコードの名前空間とクラス名を指定。
自動生成されたコード(抜粋)
APIクライアントを作る コード呼び出し ⚫ApiClient → JSONファイル読み込み時に指定したクラス名 ⚫GetReservedInfoAsync → サーバで実装した処理関数の 指定した名前 + Async
補足 C# (ASP.NET Core) のAPIサーバとクライアントは、 この組み合わせでしか使えないわけではない。 ⚫Web APIサーバ ⚫他のクライアント (JavaScriptなど) と通信可能。 ⚫Web APIクライアント ⚫OpenAPIのJSON / YAMLファイルがあれば、 ASP.NET Core以外のAPIサーバが相手でもコードは自動生成できる。 ⚫HttpClientを使用すれば、OpenAPI以外のAPIサーバとも通信は可能。 ※コードの自動生成はされない。
まとめ (C#とVisual Studio) を使用することで、 簡単にWeb APIのサーバとクライアントの両方を 作成できる ⚫ASP.Net Core ⚫C#やりましょう
参考資料 ⚫ASP.NET Core を使って Web API を作成する https://learn.microsoft.com/ja-jp/aspnet/core/web-api/?view=aspnetcore7.0&source=recommendations ⚫チュートリアル: ASP.NET Core で Web API を作成する https://learn.microsoft.com/ja-jp/aspnet/core/tutorials/first-webapi?view=aspnetcore-7.0&source=recommendations&tabs=visual-studio ⚫C# で Web API を作って呼ぶ https://zenn.dev/microsoft/articles/call-restapi-from-dotnet
ご清聴ありがとうございました!