POSTコマンドの配線: Tim Coreyによる徹底解説
APIやWebサービスで作業するとき、POSTコマンドを理解することは、サーバーにデータを送信するために重要です。 このレッスンでは、ティム・コーリーがPostman CloneプロジェクトでPOSTコマンドを接続する方法を案内します。 ティムは、HTTPリクエストメソッドの違いを説明し、POSTリクエストを正しく構成し、リクエストボディを処理し、ユーザーインターフェース(UI)とライブラリコードの間で責任を分ける方法を示します。
HTTPメソッドの実践経験を得たい方には、このレッスンがターゲットリソースにデータを送信し、HTTPヘッダーを管理し、クリーンで保守可能な方法でレスポンスを処理する実用的な例を提供します。 ティムのステップバイステップのアプローチに飛び込みましょう。
POSTコマンドの導入
ティムは前のレッスンからのインターフェース更新を見直し、システムが現在GETリクエストのみをサポートしていることを指摘します。 このレッスンでは、ユーザーがサーバーにデータを送信できるようにPOSTリクエストを有効にすることに焦点を当てています。たとえば、JSON出力やフォームデータです。
UIコードとライブラリコードを分けることが重要であると強調します。 UIはドロップダウンやHTMLフォーム、入力フィールドのような要素を管理し、ライブラリはHTTPリクエストの作成、コンテンツ形式化、データのサーバーへの送信を担当します。
Timはこのプロジェクトがポートフォリオの例として役立つと述べていますが、開発者はポートフォリオが自分独自のものであることを確認することが重要です。 彼は、自分のDev Passをtimcorey.comで参照し、C#とHTTPリクエストメソッドの理解を深める方法として推奨しています。
現在のセットアップを理解する
Visual Studioで、Timは現在のプロジェクトセットアップをデモします。UIではリクエストメソッド(GETまたはPOST)の選択とURLの入力ができます。 現在、"Go"をクリックするとGETリクエストのみが実行され、レスポンスが結果ウィンドウに表示されます。
彼が指摘する小さな問題は、GETリクエスト後に結果ウィンドウ内のすべてのテキストがハイライトされることで、情報の表示には理想的ではありません。 Timはテキストボックスではなくタブ要素にフォーカスを設定することでこれを修正します。 これにより自動のテキスト選択が防止され、ユーザーエクスペリエンスが向上します。
ドロップダウンの読み取りとHTTPアクションの決定
POSTコマンドを実装するために、Timは最初にHTTPリクエストメソッドを決定するためにドロップダウン選択を読み取る方法を説明します。 彼は解析されたリクエストメソッドを保存するための変数を作成し、ドロップダウンの文字列値をHTTPアクションに変換するためにTryParseを使用します。
選択されたメソッドが無効な場合、システムは"無効なHTTP動詞"のエラーメッセージを表示し、リクエストは試みません。検証後、リクエストメソッドがGETリクエスト、POSTリクエスト、またはDELETEやPATCHなどの他のHTTPメソッドを行うべきか決定するために使用されます。
POSTリクエストを処理するためのバックエンドの準備
次のステップは、POSTリクエストを処理するためにライブラリを更新することです。 TimはPOSTコマンドが通常データをターゲットリソースに送信するためのリクエストボディを必要とするため、GETリクエストとは異なることを説明します。 このデータはJSON、バイナリデータ、またはフォームデータである可能性があります。
TimはUIの責任をライブラリコードから分離することを強調します。 UIはボディコンテンツを文字列として渡し、ライブラリはそれをリクエストに適したHTTPコンテンツタイプに変換します。この設計により、コンテンツ形式化のような一般的な操作はUIではなくライブラリで処理されることが保証されます。
POSTリクエストのオーバーロードを作成する
TimはCallApiAsyncのオーバーロードを作成し、3つのパラメータを受け入れます:
URL – ターゲットリソースのアドレス
アクション – HTTPリクエストメソッド(GET, POSTなど)
- コンテンツ – リクエストボディとしての文字列
これにより、開発者はUIから直接JSON出力、フォームデータ、その他のエンコードされたデータをライブラリに渡すことができます。 このようにPOSTリクエストを処理することで、同じライブラリが将来のHTTPメソッド、例えばPUT, PATCH、またはDELETEもサポートできるようになります。
文字列コンテンツをHTTPコンテンツに変換する
TimはUIからの文字列コンテンツをHTTPコンテンツから継承するStringContentに変換する方法を示します。 彼はエンコーディングをUTF8に設定し、コンテンツタイプを構造化データをサーバーに送信するのに適したapplication/jsonに設定します。
このステップにより、リクエストボディが送信前に適切に形式化されることが保証されます。 Timは、この責任の分離により、開発者はHTTPヘッダー、エンコーディング、またはUIでのコンテンツ変換を心配せずにPOSTコマンドを使用できることを強調します。
UIの更新とPOSTリクエストのテスト
ライブラリが準備完了したら、TimはUIを更新して新しいオーバーロードされたメソッドを呼び出します。 彼はJSONPlaceholderを使用してPOSTリクエストをテストし、リクエストボディを手動で形式化します:
{
"title": "これは私のタイトルです",
"body": "これは私の本文テキストです",
"userId": 3
}Timは、POSTリクエストがこのデータをターゲットリソースに送信し、レスポンスが成功を示すことを説明します。 最初、HTTPアクションの列挙型にPOSTが含まれていないためエラーが発生します。POSTを追加することでこれが解決され、システムはPOSTコマンドを正常に送信できるようになります。
ライブラリでのPOSTリクエストの処理
TimはHTTPリクエストメソッドのスイッチステートメントを使用してライブラリでのPOSTコマンドの処理を示します。 GETの場合、システムはGetAsyncを使用します; POSTの場合、フォーマットされたリクエストボディでPostAsyncを使用します。
POSTコマンドをテストすると、ID(JSONPlaceholderで101)を持つレスポンスが返され、リクエストが成功したことが確認されます。 Timは、このテストAPIはデータをデータベースに保存しないが、POSTリクエストの機能を検証するのに役立つと述べています。
主要なポイントと今後の作業
Timはレッスンをまとめます:
ドロップダウンが今ではGETとPOSTメソッドをサポートします。
UIがリクエストボディをライブラリに渡します。
ライブラリは文字列をHTTPコンテンツに変換し、適切なHTTPリクエストを実行します。
- POSTコマンドは有効なレスポンスを返し、結果ウィンドウに表示できます。
彼は学習者に、今後のレッスンでPUT, PATCH, DELETEコマンドを実装するよう促し、新しいHTTPメソッドを追加するのが既存のフレームワークでどれほど簡単かを強調します。
Timはまた、過剰なエンジニアリングや未使用のコードを追加することを避けるようにアドバイスし、それが切り離された機能や孤立した要素を生じさせる可能性があるためです。
結論
Tim Coreyのビデオは、PostmanクローンプロジェクトでのPOSTコマンドに対する明確で実用的なアプローチを提供します。 UIの責任をライブラリコードから分離し、文字列データをHTTPコンテンツに変換し、レスポンスを効果的に処理することで、開発者はHTTPリクエストメソッドを実践的に学ぶことができます。
このレッスンでは、データをサーバーに送信することを示すだけでなく、他のHTTPメソッド、ヘッダー、複雑なリクエストを処理するための基盤も築き、C#でのHTTPインタラクションを学ぶための強力な実践例を提供します。

