C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#ASP.NET WebAPIのパラメーターバインディングとは何ですか?


バインディングは、WebAPIがcontrolleractionメソッドを呼び出すときにパラメーターの値を設定するプロセスです。

さまざまなタイプのパラメーターを使用するWebAPIメソッドと、バインディングプロセスをカスタマイズする方法。

パラメータがint、bool、doubleなどの単純な型の場合、Web APIはURIから(ルートデータまたはクエリ文字列のいずれかから)値を取得しようとします

パラメータがCustomer、Employeeなどの複合型の場合、WebAPIFrameworkはリクエスト本文から値を取得しようとします。

[FromBody]属性と[FromUri]属性を使用して、パラメーターバインディングプロセスのこのデフォルトの動作を変更できます。

FromUri

パラメータが単純型の場合、WebApiはURIから値を取得しようとします

double、DateTime、GUID文字列などの.NETプリミティブ型文字列型からeconvertingできる任意の型

public Student Get(int id){}

FromBody

タイプがComplextypeのパラメーターの場合、WebApiはメッセージ本文の値をバインドしようとします。

Public Student Post(Employee employee){}

[FromUri]

Web APIにURIから複合型を読み取らせるには、[FromUri]属性をパラメーターに追加します

[FromUri]属性を使用して、WebApiに複雑なタイプの値をQueryStringから取得させます。

public Student Get([FromUri] Employee employee)
public HttpResponseMessage Get([FromUri] Employee employee) { ... }

[FromBody]

[FromBody]属性を使用して、デフォルト値とは反対に、リクエスト本文からプリミティブ型の値を取得します

いいえ、1回のアクションで複数のFormBodyを使用することはできません。

Web APIにリクエスト本文から単純型を読み取らせるには、[FromBody]

を追加します。

この例では、Web APIはメディアタイプフォーマッターを使用して、リクエスト本文からnameの値を読み取ります

public Student Post([FromBody] string name]){...}
public HttpResponseMessage Post([FromBody] string name) { ... }

  1. C#ASP.NET WebAPIのアクションメソッドからカスタム結果タイプを返す方法は?

    IHttpActionResultインターフェイスを実装することで、結果タイプとして独自のカスタムクラスを作成できます。 。 IHttpActionResultには、HttpResponseMessageインスタンスを非同期的に作成する単一のメソッドExecuteAsyncが含まれています。 public interface IHttpActionResult {    Task<HttpResponseMessage> ExecuteAsync(CancellationToken    cancellationToken); } コントロ

  2. C#ASP.NET WebAPIでのコントローラーアクションのさまざまな戻り値の種類は何ですか?

    Web APIアクションメソッドは、次のリターンタイプを持つことができます。 ボイド プリミティブ型/複合型 HttpResponseMessage IHttpActionResult 無効 − すべてのアクションメソッドが何かを返す必要はありません。ボイドリターンタイプにすることができます。 例 using DemoWebApplication.Models using System.Web.Http; namespace DemoWebApplication.Controllers{    public class DemoCont