Web API development in Visual Studio 2022
by
Yuta Matsumura
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
#dotnetjpcommunities Web API development in Visual Studio 2022 2023/05/31 .NET の 3 日間 day1 Yuta Matsumura © 2023 Yuta Matsumura.
Slide 2
Slide 2 text
#dotnetjpcommunities 松村 優大 (Yuta Matsumura) Currently working for © 2023 Yuta Matsumura. Chief Technical Architect C#, PHP, Azure, GitHub が好き Microsoft MVP (Developer Technologies) #fukuten #devblogradio の中の人 @tsubakimoto_s
Slide 3
Slide 3 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 4
Slide 4 text
#dotnetjpcommunities © 2023 Yuta Matsumura. 2023年6月24日 (土) 福岡市で開催 #phpconfuk
Slide 5
Slide 5 text
#dotnetjpcommunities © 2023 Yuta Matsumura. 2023年8月3日 (木) 福岡市で開催 #cndf2023 プロポーザル募集中 event.cloudnativedays.jp/cndf2023
Slide 6
Slide 6 text
#dotnetjpcommunities これからお話しすること Visual Studio 2022 での Web API 開発に関する最近の技術 https://devblogs.microsoft.com/visualstudio/web-api- development-in-visual-studio-2022/ © 2023 Yuta Matsumura.
Slide 7
Slide 7 text
#dotnetjpcommunities 前提:Visual Studio 2022 17.7.0 Preview 1.0 © 2023 Yuta Matsumura. https://visualstudio.microsoft.com/
Slide 8
Slide 8 text
#dotnetjpcommunities 目次 1. Visual Studio でのスキャフォールド 2. Visual Studio での Entity Framework Core サポート 3. Visual Studio でのエンドポイントエクスプローラー 4. Visual Studio での REST クライアント 5. (おまけ)Visual Studio dev tunnels © 2023 Yuta Matsumura.
Slide 9
Slide 9 text
#dotnetjpcommunities プロジェクトの作成 © 2023 Yuta Matsumura.
Slide 10
Slide 10 text
#dotnetjpcommunities プロジェクトの作成 © 2023 Yuta Matsumura.
Slide 11
Slide 11 text
#dotnetjpcommunities プロジェクトの作成 © 2023 Yuta Matsumura.
Slide 12
Slide 12 text
#dotnetjpcommunities 最小限の API = Minimal API • ASP.NET Core 6.0 で登場した機能 • 依存関係が最小限の Web API を作成 • ルーティングで構成するエンドポイント定義 (ApiContollerを使わない) © 2023 Yuta Matsumura. https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/minimal-apis
Slide 13
Slide 13 text
#dotnetjpcommunities #dotnetjpcommunities Program.cs
Slide 14
Slide 14 text
#dotnetjpcommunities © 2023 Yuta Matsumura. https://speakerdeck.com/tsubakimoto_s/minimal-api-to-di-noliang-izu-mihe-wase
Slide 15
Slide 15 text
#dotnetjpcommunities プロジェクトの作成 © 2023 Yuta Matsumura.
Slide 16
Slide 16 text
#dotnetjpcommunities #dotnetjpcommunities のサポート © 2023 Yuta Matsumura.
Slide 17
Slide 17 text
#dotnetjpcommunities #dotnetjpcommunities 定義を設定した エンドポイント © 2023 Yuta Matsumura.
Slide 18
Slide 18 text
#dotnetjpcommunities スキャフォールドの実施 © 2023 Yuta Matsumura.
Slide 19
Slide 19 text
#dotnetjpcommunities #dotnetjpcommunities こういうクラスがあったとします © 2023 Yuta Matsumura.
Slide 20
Slide 20 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 21
Slide 21 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 22
Slide 22 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 23
Slide 23 text
#dotnetjpcommunities スキャフォールディング後 • DB コンテキスト • 接続文字列の設定 (appsettings.json) • エンドポイントの定義 • EF Core ツールのインストール • Microsoft.EntityFrameworkCore.Sqlite • Microsoft.EntityFrameworkCore.Tools • Microsoft.VisualStudio.Web.CodeGenerati on.Design © 2023 Yuta Matsumura.
Slide 24
Slide 24 text
#dotnetjpcommunities #dotnetjpcommunities エンドポイント © 2023 Yuta Matsumura.
Slide 25
Slide 25 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 26
Slide 26 text
#dotnetjpcommunities EF Core でのマイグレーション © 2023 Yuta Matsumura.
Slide 27
Slide 27 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 28
Slide 28 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 29
Slide 29 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 30
Slide 30 text
#dotnetjpcommunities Web API エンドポイントエクスプローラー © 2023 Yuta Matsumura.
Slide 31
Slide 31 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 32
Slide 32 text
#dotnetjpcommunities #dotnetjpcommunities エンドポイントエクスプローラーのサポート © 2023 Yuta Matsumura.
Slide 33
Slide 33 text
#dotnetjpcommunities 表示>その他のウィンドウ © 2023 Yuta Matsumura.
Slide 34
Slide 34 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 35
Slide 35 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 36
Slide 36 text
#dotnetjpcommunities #dotnetjpcommunities ... 変数 ... HTTPリクエスト(GET) 区切り © 2023 Yuta Matsumura.
Slide 37
Slide 37 text
#dotnetjpcommunities #dotnetjpcommunities ... 変数 ... HTTPリクエスト(POST) リクエストヘッダー リクエストヘッダー リクエストボディ 変数の埋込 © 2023 Yuta Matsumura.
Slide 38
Slide 38 text
#dotnetjpcommunities VS の REST Client • .http 拡張子、または .rest 拡張子 • 以前は REST Client 拡張機能が必要だった • 今は Visual Studio がサポートしている • VS Code でも同様のことができる https://marketplace.visualstudio.com/items?itemName=humao.rest-client © 2023 Yuta Matsumura.
Slide 39
Slide 39 text
#dotnetjpcommunities VS の REST Client でまだできないこと • OPTIONS メソッド • 複数行にわたるリクエスト • 名前付きリクエスト • 動的変数 • 環境ファイル • リクエストボディのファイルパス 指定 • multipart/form-data を使用する場 合の本文の混合形式 • GraphQL リクエスト • cURLリクエスト • cURL としてコピー/貼り付け • リクエスト履歴 • 応答本文をファイルに保存する • 証明書ベースの認証 • プロンプト変数 • システム変数 • 応答プレビューのカスタマイズ • リクエストごとの設定 © 2023 Yuta Matsumura.
Slide 40
Slide 40 text
#dotnetjpcommunities (おまけ)Visual Studio dev tunnels © 2023 Yuta Matsumura.
Slide 41
Slide 41 text
#dotnetjpcommunities ローカル環境 Web API の動作確認 © 2023 Yuta Matsumura. https://example.com/... https://localhost/... 到達しない!
Slide 42
Slide 42 text
#dotnetjpcommunities ローカル環境 Web API の動作確認 © 2023 Yuta Matsumura. https://example.com/... https://xxx.ngrok.io/...
Slide 43
Slide 43 text
#dotnetjpcommunities ローカル環境 Web API の動作確認 © 2023 Yuta Matsumura. https://example.com/... https://xxx.devtunnels.ms/...
Slide 44
Slide 44 text
#dotnetjpcommunities Visual Studio dev tunnels • Visual Studio 2022 17.5 Preview から登場 • ローカルの Web エンドポイントを外部公開する • 一時的または永続的なエンドポイント • アクセス制御可能 • HTTPS プロトコルで提供される © 2023 Yuta Matsumura. https://learn.microsoft.com/ja-jp/connectors/custom-connectors/port-tunneling
Slide 45
Slide 45 text
#dotnetjpcommunities © 2023 Yuta Matsumura. 一時的・永続的 非公開・組織用・公開用
Slide 46
Slide 46 text
#dotnetjpcommunities dev tunnels のアクセス制御 種類 アクセス範囲 非公開 (Private) 作成者のみ 組織用 (Organization) 同一組織アカウントのみ (MSAやGitHubアカウントでは非公開と同じ) 公開用 (Public) 認証なし © 2023 Yuta Matsumura.
Slide 47
Slide 47 text
#dotnetjpcommunities 初回アクセス時 © 2023 Yuta Matsumura.
Slide 48
Slide 48 text
#dotnetjpcommunities © 2023 Yuta Matsumura.
Slide 49
Slide 49 text
#dotnetjpcommunities ご清聴ありがとうございました © 2023 Yuta Matsumura.