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.