zoukankan      html  css  js  c++  java
  • .NET Core3.1 WebAPI post参数传递时后端的接收方式

    .NET Core WebAPI post参数传递时后端的接收方式

    1. 实体类
    2. dynamic动态类型
    3. JObject参数(推荐)
    4. 单值参数(字符串参数)

    A.前端Post请求代码

    $.ajax({
               url: "/api/student/poststudent",
               type: 'POST',
               data:JSON.stringify({ name: "张三", age: 21 }),
               success:function () {
               },
               dataType: "json",
               contentType: "application/json"
           });

    B.后端接收参数方式

    1. 实体类

    实体类是比较简单的一种传参方式,使用频率非常高。

    1. 添加实体类
        public class Student
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }
    1. 后台处理Post请求代码
    [HttpPost("{id}")]
    public void PostStudent([FromBody] Student student)
    {
    }
    1. 接收参数结果

    2.dynamic动态类型

    1. 后台处理Post请求代码
    [HttpPost("{id}")]
    public void PostStudent(dynamic student)
    {
        var name = student.name;//name大小写与前端参数一致
        var age = student.age;
    }
    1. 接收参数结果

    3.JObject参数(推荐)

      JObject传参方式是个人比较推荐的一种方式,前台请求传参写法不具迷惑性,后台接收也较为灵活

    1. 引入Microsoft.AspNetCore.Mvc.NewtonsoftJson包
    2. 添加引用 using Newtonsoft.Json.Linq;
    3. 后台处理Post请求代码
    4. 3.0以后需要为Controllers添加NewtonsoftJson注册(services.AddControllers() .AddNewtonsoftJson();)
    [HttpPost("{id}")]
    public void PostStudent([FromBody] JObject student)
    {
    }
    1. 接收参数结果

    4.单值参数(字符串参数)

    只能传一个字符串参数,并且用单引号包一个双引号,双引号里为字符串内容!

    1. 前端代码与以上方式不同
    $.ajax({
               url: "/api/student/poststudent",
               type: 'POST',
               data:'"name=张三,age=21"',//这里是重点!用单引号包一个双引号,双引号里为字符串内容!
               success:function () {
               },
               dataType: "json",
               contentType: "application/json"
           });
    1. 后台处理Post请求代码
    [HttpPost("{id}")]
    public void PostStudent([FromBody] string values)
    {
    }

    WebApi 方法参数前加[FromBody]标识,表示该参数值应该从请求的Body中获取,而不是从URL中获取。不加[FromBody]标识后台取不到参数值。

    1. 接收参数结果

    设置允许跨域

    如果有跨域需求支持,请设置允许跨域。在Stateup.cs中添加如下代码。

    1. 修改ConfigureServices方法,添加代码如下:
    //允许一个或多个来源可以跨域
    services.AddCors(options =>
    {
          options.AddPolicy("CustomCorsPolicy", policy =>
          {
                 // 设定允许跨域的来源,有多个可以用','隔开
                 policy.WithOrigins("https://localhost:5000")//只允许https://localhost:5000来源允许跨域
                 .AllowAnyHeader()
                 .AllowAnyMethod()
                 .AllowCredentials();
          });
    });

    //配置跨域处理,允许所有来源
    services.AddCors(options =>
    {
      options.AddPolicy("cors", policy =>
      {
        policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin();
      });
    });
     
    1. 修改Configure方法,添加代码如下:
    app.UseCors("CustomCorsPolicy");
  • 相关阅读:
    向代码致敬,寻找你的第83行
    佛系程序员的月薪五万指南
    再谈全局网HBase八大应用场景
    如何避免HBase写入过快引起的各种问题
    阿里云MaxCompute被Forrester评为全球云端数据仓库领导者
    为了让开发者写MaxCompute SQL更爽,DataWorks 增强SQL 编辑器功能
    《CDN 之我见》原理篇——CDN的由来与调度
    Installing GCC (C++ Compiler and Development Tools)
    Gems installation
    Fedora23
  • 原文地址:https://www.cnblogs.com/kevin860/p/12597879.html
Copyright © 2011-2022 走看看