asp.Netcoreの下のRequestBodyとRequestFormコミット

3676 ワード

最近aspを開発しています.Netcoreの場合、RequestBodyとRequestFormのデータ提出方式に遭遇し、整理して結果を記録します.
RequestFormについては、一般的に受信フォームの情報であるが、RequestBodyは、aspにおいて複雑なデータ(集合またはヘテロオブジェクト)を受信ために使用されることが多い.Netでは受信を区別しやすく,actionでは[FromBody]と[FromForm]で識別すればよいが,クライアントにとっては区別が大きく,ここでは2つの方式,RestSharpとJQueryのajaxリクエストの2つの方式を記録する.
  • サービス
  • [HttpPost("additem")]
    public IActionResult AddItem([FromBody]Item item)
    {
        return new JsonResult(new { Result = 0, Message = "    ",Content=item.ToString() },new Newtonsoft.Json.JsonSerializerSettings ());
    }
     
    [HttpPost("additem")]
    public IActionResult AddItem([FromForm]Item item)
    {
        return new JsonResult(new { Result = 0, Message = "    " ,Content=item.ToString()},new Newtonsoft.Json.JsonSerializerSettings ());
    }

     
  • RestSharp方式プロジェクトでは、NugetでRestSharpクラスライブラリをインストールし、私はv 105を使用しています.2.3.RestSharpでRequestBodyとRequestFormをコミットするのは比較的簡単で、コードは以下の通りです:
  • using System;using RestSharp;namespace RestSharpTest
    {
        class Program    {
            static void Main(string[] args)
            {
                while (true)
                {
                    var client = new RestClient("http://localhost:5000");
                    var request = new RestRequest("additem", Method.POST);
                    request.RequestFormat = DataFormat.Json;
                    Console.WriteLine("1、RequestBody  2、RequestForm");
                    switch (Console.ReadLine())
                    {
                        case "1":
                            request.AddJsonBody(new { ID = 111, Name = "  ", Birthday = DateTime.Now });
                            break;
                        case "2":
                            request.AddObject(new { ID = 111, Name = "  ", Birthday = DateTime.Now });
                            break;
                    }
                    var response = client.Execute(request);
                    Console.WriteLine(response.Content);
                  
                }
     
            }
        }
    }
  • JQueryでajaxで要求jqueryで他のwebにアクセスする場合は、ドメイン間アクセスを設定します(ドメイン間アクセスについては、http://www.cnblogs.com/xishuai/p/aspnet-core-cors.html)
  • html>    
    	<meta/>    <script/>    <input/>    <input/>    <script>        $("#sava1").click(function () {
                $.post("http://localhost:5000/additem", { ID: 112, Name: "  ", Birthday: "2017-01-23" }, function (result) {             
                    alert(result.Message+result.Content);
                },"json")
            })
     
            $("#sava2").click(function () {         
                $.ajax({
                    type: "POST",
                    url: "http://localhost:5000/additem",
                    contentType: "application/json",
                    dataType: "json",
                    async: true,
                    data: JSON.stringify({ "ID": 112, "Name": "  ", "Birthday": "2017-01-23 12:12:12" }),
                    success: function (result) {
                        alert(result.Message + result.Content);
                    }
                });
     
            })
        </script></code></pre> 
       <p><span style="font-family:'  ';"/><br/></p> 
       <p><span style="font-family:'  ';">     ,web api  [FromBody],    web api  app DeskTop     ,web     [FromForm],     web              。</span></p> 
       <p><br/></p> 
      </div> 
     </div> 
    </div>
                                </div>
                            </div>