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

C#ASP.NETWebAPIのFromBody属性とFromUri属性の違いは何ですか?


ASP.NET Web APIがコントローラーのメソッドを呼び出すときは、パラメーターの値を設定する必要があります。これは、パラメーターバインディングと呼ばれるプロセスです。

モデル(アクションパラメーター)をバインドするには、通常はフォーマッターにデフォルト設定されますが、URIから[FromUri]属性でモデルを装飾する必要があります。 FromUriAttributeは、ModelBinderAttributeから継承するだけで、IUriValueProviderFactoryで定義されたValueProviderを使用してURIから特定のパラメーターを取得するようにWebAPIに指示するショートカットディレクティブを提供します。属性自体は封印されており、これ以上拡張することはできませんが、必要な数のカスタムIUriValueProviderFactoriesを追加できます。

ParameterBindingAttributeクラスを継承する[FromBody]属性は、HTTPリクエストの本文からパラメーターとそのプロパティを設定するために使用されます。 ASP.NETランタイムは、本文を読み取る責任を入力フォーマッターに委任します。 [FromBody]が複合型パラメーターに適用されると、そのプロパティに適用されるバインディングソース属性はすべて無視されます。

FromUri属性の例

using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public IEnumerable<string> Get([FromUri] string id, [FromUri] string name){
         return new string[]{
            $"The Id of the Student is {id}",
            $"The Name of the Student is {name}"
         };
      }
   }
}

上記の例では、URIのidとnameの値を渡して、Getメソッドの対応する変数に入力します。

http:// localhost:58174 / api / demo?id =1&name =Mark

出力

上記のコードの出力は

です。

C#ASP.NETWebAPIのFromBody属性とFromUri属性の違いは何ですか?

FromBody属性の例

以下のプロパティを持つStudentモデルを作成しましょう。

namespace DemoWebApplication.Models{
   public class Student{
      public int Id { get; set; }
      public string Name { get; set; }
   }
}

コントローラーコード

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public IEnumerable<string> Get([FromBody] Student student){
         return new string[]{
            $"The Id of the Student is {student.Id}",
            $"The Name of the Student is {student.Name}"
         };
      }
   }
}

上記の例では、studentの値がリクエストの本文に渡され、Studentオブジェクトの対応するプロパティにマップされます。以下は、Postmanを使用したリクエストとレスポンスです。

C#ASP.NETWebAPIのFromBody属性とFromUri属性の違いは何ですか?


  1. HTMLのid属性とname属性の違いは何ですか?

    ID フォーム要素のIDは、単なる識別とは関係なく、要素内に含まれるデータとは関係ありません。 IDは書面で添付され、JavascriptとCSSで使用されます 。 JSメソッドで参照getElementByID() 名前 NAME属性は、ブラウザからサーバーに送信されるHTTPリクエストで変数名として使用され、value属性に含まれるデータに関連付けられます。私たち CSSまたはどのURLでも参照できません JSメソッドで参照getElementByName()

  2. novalidate属性とformnovalidate属性の違いは何ですか?

    novalidate およびf ormnovalidate 属性は、検証をバイパスするために使用されます。 ノバリデート 属性がフォームに適用され、検証されないようにします。 formnovalidate novalidateを上書きする入力タイプの送信ボタンに適用されます 。検証せずにフォームを送信します。 ノバリデート 属性もブール属性ですが、これを使用しても送信フォームは検証されません。 formnovalidate HTMLの属性は、複数の送信ボタンがあるフォームがある場合に役立ちます。 HTMLnovalidate属性 HTMLのnovalidate属性は、送