Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web API development in Visual Studio 2022

Web API development in Visual Studio 2022

Yuta Matsumura

May 31, 2023
Tweet

More Decks by Yuta Matsumura

Other Decks in Technology

Transcript

  1. #dotnetjpcommunities
    Web API development in Visual Studio 2022
    2023/05/31 .NET の 3 日間 day1
    Yuta Matsumura
    © 2023 Yuta Matsumura.

    View Slide

  2. #dotnetjpcommunities
    松村 優大 (Yuta Matsumura)
    Currently working for
    © 2023 Yuta Matsumura.
    Chief Technical Architect
    C#, PHP, Azure, GitHub が好き
    Microsoft MVP (Developer Technologies)
    #fukuten #devblogradio の中の人
    @tsubakimoto_s

    View Slide

  3. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  4. #dotnetjpcommunities
    © 2023 Yuta Matsumura.
    2023年6月24日 (土)
    福岡市で開催
    #phpconfuk

    View Slide

  5. #dotnetjpcommunities
    © 2023 Yuta Matsumura.
    2023年8月3日 (木)
    福岡市で開催
    #cndf2023
    プロポーザル募集中
    event.cloudnativedays.jp/cndf2023

    View Slide

  6. #dotnetjpcommunities
    これからお話しすること
    Visual Studio 2022 での Web API 開発に関する最近の技術
    https://devblogs.microsoft.com/visualstudio/web-api-
    development-in-visual-studio-2022/
    © 2023 Yuta Matsumura.

    View Slide

  7. #dotnetjpcommunities
    前提:Visual Studio 2022 17.7.0 Preview 1.0
    © 2023 Yuta Matsumura.
    https://visualstudio.microsoft.com/

    View Slide

  8. #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.

    View Slide

  9. #dotnetjpcommunities
    プロジェクトの作成
    © 2023 Yuta Matsumura.

    View Slide

  10. #dotnetjpcommunities
    プロジェクトの作成
    © 2023 Yuta Matsumura.

    View Slide

  11. #dotnetjpcommunities
    プロジェクトの作成
    © 2023 Yuta Matsumura.

    View Slide

  12. #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

    View Slide

  13. #dotnetjpcommunities
    #dotnetjpcommunities
    Program.cs

    View Slide

  14. #dotnetjpcommunities
    © 2023 Yuta Matsumura.
    https://speakerdeck.com/tsubakimoto_s/minimal-api-to-di-noliang-izu-mihe-wase

    View Slide

  15. #dotnetjpcommunities
    プロジェクトの作成
    © 2023 Yuta Matsumura.

    View Slide

  16. #dotnetjpcommunities
    #dotnetjpcommunities
    のサポート
    © 2023 Yuta Matsumura.

    View Slide

  17. #dotnetjpcommunities
    #dotnetjpcommunities
    定義を設定した エンドポイント
    © 2023 Yuta Matsumura.

    View Slide

  18. #dotnetjpcommunities
    スキャフォールドの実施
    © 2023 Yuta Matsumura.

    View Slide

  19. #dotnetjpcommunities
    #dotnetjpcommunities
    こういうクラスがあったとします
    © 2023 Yuta Matsumura.

    View Slide

  20. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  21. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  22. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  23. #dotnetjpcommunities
    スキャフォールディング後
    • DB コンテキスト
    • 接続文字列の設定 (appsettings.json)
    • エンドポイントの定義
    • EF Core ツールのインストール
    • Microsoft.EntityFrameworkCore.Sqlite
    • Microsoft.EntityFrameworkCore.Tools
    • Microsoft.VisualStudio.Web.CodeGenerati
    on.Design
    © 2023 Yuta Matsumura.

    View Slide

  24. #dotnetjpcommunities
    #dotnetjpcommunities
    エンドポイント
    © 2023 Yuta Matsumura.

    View Slide

  25. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  26. #dotnetjpcommunities
    EF Core でのマイグレーション
    © 2023 Yuta Matsumura.

    View Slide

  27. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  28. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  29. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  30. #dotnetjpcommunities
    Web API エンドポイントエクスプローラー
    © 2023 Yuta Matsumura.

    View Slide

  31. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  32. #dotnetjpcommunities
    #dotnetjpcommunities
    エンドポイントエクスプローラーのサポート
    © 2023 Yuta Matsumura.

    View Slide

  33. #dotnetjpcommunities
    表示>その他のウィンドウ
    © 2023 Yuta Matsumura.

    View Slide

  34. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  35. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  36. #dotnetjpcommunities
    #dotnetjpcommunities
    ... 変数
    ... HTTPリクエスト(GET)
    区切り
    © 2023 Yuta Matsumura.

    View Slide

  37. #dotnetjpcommunities
    #dotnetjpcommunities
    ... 変数
    ... HTTPリクエスト(POST)
    リクエストヘッダー
    リクエストヘッダー
    リクエストボディ
    変数の埋込
    © 2023 Yuta Matsumura.

    View Slide

  38. #dotnetjpcommunities
    VS の REST Client
    • .http 拡張子、または .rest 拡張子
    • 以前は REST Client 拡張機能が必要だった
    • 今は Visual Studio がサポートしている
    • VS Code でも同様のことができる
    https://marketplace.visualstudio.com/items?itemName=humao.rest-client
    © 2023 Yuta Matsumura.

    View Slide

  39. #dotnetjpcommunities
    VS の REST Client でまだできないこと
    • OPTIONS メソッド
    • 複数行にわたるリクエスト
    • 名前付きリクエスト
    • 動的変数
    • 環境ファイル
    • リクエストボディのファイルパス
    指定
    • multipart/form-data を使用する場
    合の本文の混合形式
    • GraphQL リクエスト
    • cURLリクエスト
    • cURL としてコピー/貼り付け
    • リクエスト履歴
    • 応答本文をファイルに保存する
    • 証明書ベースの認証
    • プロンプト変数
    • システム変数
    • 応答プレビューのカスタマイズ
    • リクエストごとの設定
    © 2023 Yuta Matsumura.

    View Slide

  40. #dotnetjpcommunities
    (おまけ)Visual Studio dev tunnels
    © 2023 Yuta Matsumura.

    View Slide

  41. #dotnetjpcommunities
    ローカル環境
    Web API の動作確認
    © 2023 Yuta Matsumura.
    https://example.com/...
    https://localhost/...
    到達しない!

    View Slide

  42. #dotnetjpcommunities
    ローカル環境
    Web API の動作確認
    © 2023 Yuta Matsumura.
    https://example.com/...
    https://xxx.ngrok.io/...

    View Slide

  43. #dotnetjpcommunities
    ローカル環境
    Web API の動作確認
    © 2023 Yuta Matsumura.
    https://example.com/...
    https://xxx.devtunnels.ms/...

    View Slide

  44. #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

    View Slide

  45. #dotnetjpcommunities
    © 2023 Yuta Matsumura.
    一時的・永続的
    非公開・組織用・公開用

    View Slide

  46. #dotnetjpcommunities
    dev tunnels のアクセス制御
    種類 アクセス範囲
    非公開 (Private) 作成者のみ
    組織用 (Organization)
    同一組織アカウントのみ
    (MSAやGitHubアカウントでは非公開と同じ)
    公開用 (Public) 認証なし
    © 2023 Yuta Matsumura.

    View Slide

  47. #dotnetjpcommunities
    初回アクセス時
    © 2023 Yuta Matsumura.

    View Slide

  48. #dotnetjpcommunities
    © 2023 Yuta Matsumura.

    View Slide

  49. #dotnetjpcommunities
    ご清聴ありがとうございました
    © 2023 Yuta Matsumura.

    View Slide