ピット内(C)Asp.netウェブAPI - [HTTPポストリクエストパラメータタイプWebAPIのPOSTエラーを渡すパラメータ「要求された操作に一致するものを見つけることができません。」

接続されている記事、

HttpPost要求

1、ポスト要求、単一のパラメータ

フロント

VaRのURL = 'API / EnterOrExit / GetData2';
VARパラ= {};
パラ[ "電話"] = "phone13880825221"。
パラ[ "UID"] = "uid287572292"。
$ .post(URL、パラ、関数(){}、 "アプリケーション/ JSON")。

バックエンド

[HttpPost]
        公共IHttpActionResult GetData2(文字列電話)
        {
            文字列結果= "接口通了"。
            OK <文字列>(結果)を返します。
        }

 

画像

これは、再び、これはモンスターをクソ、なぜこれは、ほとんどそれを得るとしがたは受けていない、と

ああ、それについての知識の一部を覚えていますか?HTTPプロトコルは、要求されたデータは、(データはHTTPプロトコルヘッダに配置されている)URLを併合してしまいますと、パッケージ本体上のポストの要求は、httpプロトコルのパケットです

画像

GETリクエストの一部、送信エンティティ、[FromUri] - GET要求として、パラメータデータがHTTPプロトコルのヘッダ内に配置されている上記のように、パッケージのパッケージ本体上のHTTP POSTプロトコルは、推定される[FromBodyが存在しなければなりません]と同様に、事実が自慢よりも雄弁、と言ってみてください、

フロント

VaRのURL = 'API / EnterOrExit / GetData2';
VARパラ= {};
パラ[ "電話"] = "phone13880825221"。
パラ[ "UID"] = "uid287572292"。
$ .post(URL、パラ、関数(){}、 "アプリケーション/ JSON")。

バックエンド

[HttpPost]
        公共IHttpActionResult GetData2([FromBody]ストリング電話)
        {
            文字列結果= "接口通了"。
            OK <文字列>(結果)を返します。
        }

ええ、行動に休憩、しかし、電話=ヌル、urlパラメータは、キーと値のペアになるように選択されてなぜ、その後、偉大な神によって書かれた関連するブログへのアクセスは、一つのキーであり、一定値ので、ここFromBodyと我々 URLパラメータを取ることによって、一般的なメカニズムが異なっている場合、その機構は=値、単一のパラメータは、神は、このような変化に言っ

フロント

VaRのURL = 'API / EnterOrExit / GetData2';
VARパラ= {};
パラ[ ""] = "phone13880825221"。
$ .post(URL、パラ、関数(){}、 "アプリケーション/ JSON")。

同じ、よく、携帯電話の後端部には、値を受け取りました。

 

************************************************** **********************************

図2に示すように、POSTリクエスト、複数のパラメータ

ポストは、リクエストボディメカニズムからパラメータを取得し、URLから取られた異なるメカニズムのパラメータを取得するので、ポストは、=値であり、

マルチパラメータ要求 - 要求エンティティは、に変換される - パラメータが問題に変換される単一の要求、

マルチパラメータパッケージエンティティクラス、エンティティクラスの文字列形式にパッケージJSON

フロント

VaRのURL = 'API / EnterOrExit / GetData2';


お金= {};


パラ[ "電話"] = "13880825221"。

 

パラ[ "UID"] = "uid287572292"。

 

VAR STR = JSON.stringify(パラ);

 

データ= { ""、STR}

$ .post(URL、データ、関数(){}、  "アプリケーション/ JSON" )。

バックエンド

[HttpPost]
        公共IHttpActionResult GetData2([FromBody]ストリングrequestStr)
        {

            VARモデル= Newtonsoft.Json.JsonConvert.DeserializeObject <TB_RequestModel>(requestStr)。
            文字列の結果= "接口通了"。
            OK <文字列>(結果)を返します。
        }

requestStrは、JSON形式の文字列は、非直列化エンティティ缶を取得しました。

そして、各パスの複数のパラメータのためのポストを要求した後、すべてのエンティティのニーズが変更される前に、我々は台湾、頻繁に変更されたパラメータは、もちろん、上記の方法は、十分なされていない場合は、各パラメータの変更は、神は、優れたソリューションを提供しました

フロント

VaRのURL = 'API / EnterOrExit / GetData2';
VARパラ= {};
パラ[ ""] = "phone13880825221"。

パラ[ "UID"] = "uid287572292"。

VARデータ= JSON.stringify(パラ);

$ .post(URL、データ、関数(){}、 "アプリケーション/ JSON")。

バックエンド

[HttpPost] 
 パブリックオブジェクトGetData2(動的OBJ)
 { 
     VAR UID = Convert.ToString(obj.UID)。          
        文字列結果= "インタフェースパス";
        リターンOK <ストリング>(結果)。
 }

もう一つ注意すべきは、型JSON、すなわちのcontentTypeのパラメータ内のAJAXリクエストを追加することが必要ということです: '/ jsonのアプリケーションの場合、このプロパティ私も背中の応答について話しましたAJAX要求、要求のコンテンツタイプ、です、コンテンツタイプ。

-------------------------------------------------- -------------------------------------------------- -----------------

3、ポスト要求エンティティパラメータ

通常の直接送達遠位JSONは、直接使用するための背景の種類に対応するがFromBodyなく受信できる場合、エンティティは、パラメータが使用されます。しかし、ここで注意すべき点は、contentTypeのappplication / JSON、そうでない場合は、パラメータが背景に渡すことができないためにそこに指定することができないということです。httppost、デフォルト要求のcontentTypeを要求:アプリケーション/ x-www-form-urlencodedで、帳票フォームデータて送信サーバへのキー/値のフォーマット(データ送信フォームのデフォルトフォーマット)として符号化されます

フロント:

VaRのURL = 'API / EnterOrExit / GetData2';
VARパラ= {};
パラ[ "電話"] = "phone13880825221"。

パラ[ "UID"] = "uid287572292"。

 

各データ=パラ;

 

$ .post(URL、データ、関数(){});

リア:

[HttpPost]
公共IHttpActionResult試験(REQUESTMODELモデル)
{
           文字列MSG = "";
           文字列コード=「」;
           文字列の結果= "接口通了"。
           OK <文字列>(結果)を返します。
}

モデルは空ではなく、各プロパティの値を持っています

PS、上方にフロントエンドコードを見て、$ポスト(URL、データ、関数(){});.要求は、コンテンツタイプを指定していません

デフォルトでは、サービスを形成するために、フォームデータ/値内のポスト要求キーを送信することで、オブジェクトのキー/値の属性値は、我々だけで、対応するサーバが受信できる持っている必要があります。アプリケーション/ JSONなら一方、データは、バックエンドJSONオフシーケンスの前端部は、後端が固体物体にそれを作ることを示すだけでなく、デシリアライズプロセス。このロジックによると、その後、我々は、オブジェクトのシーケンスを通過した後、アプリケーション/ JSONにcontentTypeの場合は指定し、また、ああでなければなりません。

可能であるこのモデルを、次ので、

フロント:

VaRのURL = 'API / EnterOrExit / GetData2';
VARパラ= {};
パラ[ "電話"] = "13880825221"。

パラ[ "UID"] = "uid287572292"。

VARデータ= JSON.stringify(パラ);

$ .post(URL、データ、関数(){}、 "アプリケーション/ JSON」)。

リア:

[HttpPost]
公共IHttpActionResult試験(REQUESTMODELモデル)
{
           文字列MSG = "";
           文字列コード=「」;
           文字列の結果= "接口通了"。
           OK <文字列>(結果)を返します。
}

知識を要約:httpリクエストで、アプリケーション/ JSONへのcontentTypeを指定した場合、それは、オブジェクトのシーケンスを通過する必要があります。デフォルトのパラメータ型ポスト要求場合、オブジェクトのフロントエンドJSONタイプは、直接渡すことができます。

ポスト要求API、いくつかの特別な、配列、コレクションがありますが、私は仕事で使用していなかったことから、いわば権利はありませんが、進化の基本的なパラメータ、明確な原則と機会上記のすべてを使用し、私が使用することを信じています人々は、リクエストの様々なパラメータのニーズを満たすことができます。

 

POSTリクエストAPIは、時々、あなたは正しい、あるいは報告され、どのような方法を見つけるだろう

エラーを渡すパラメータWebAPIのポストタイプは「要求された操作と一致しませんでした」    リファレンスボーエンhttp://www.cnblogs.com/xiaoerlang90/p/5420030.html

おすすめ

転載: www.cnblogs.com/lhxsoft/p/11887095.html