.NET WEB API post传参,前端传参形式/后端接收方式

3 篇文章 0 订阅

.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(Student student)
{
}
  1. 接收参数结果

2.dynamic动态类型

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

2.dynamic动态类型

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

 

 

3.JObject参数

  1. 引入Microsoft.AspNetCore.Mvc.NewtonsoftJson包
  2. 添加引用 using Newtonsoft.Json.Linq;
  3. 后台处理Post请求代码
[HttpPost("{id}")]
public void PostStudent(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]标识后台取不到参数值。
4. 接收参数结果

设置允许跨域

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

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

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Web API 是一种用于构建 RESTful Web 服务的框架。在 Web API ,我们可以使用标准的 HTTP 方法(GET、POST、PUT、DELETE 等)来操作资源,通过 URL 参数请求体传递数据。接下来,我将向您介绍如何在 .NET Web API 接收参数。 首先,我们需要创建一个 Web API 控制器。在控制器,我们可以定义多个 Action 方法,每个方法对应一个 HTTP 请求。 例如,我们创建一个名为 "ValuesController" 的控制器,并定义一个名为 "Get" 的 Action 方法,用于处理 HTTP GET 请求: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } } ``` 在上面的代码,我们返回了一个包含两个字符串的数组作为响应结果。 现在,我们来看一下如何接收参数。假设我们想要实现一个查询指定 ID 的资源的功能,我们可以在控制器添加一个名为 "GetById" 的 Action 方法,并使用 id 参数来指定资源的 ID: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id) { return "value" + id; } } ``` 在上面的代码,我们使用 "int id" 参数接收请求 URL 的 ID 参数,并返回一个包含 "value" 和 ID 的字符串作为响应结果。 如果我们想要接收多个参数,可以在方法添加多个参数: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id, string name) { return "Hello, " + name + "! Your ID is " + id; } } ``` 在上面的代码,我们添加了一个名为 "name" 的字符串类型参数,用于接收请求 URL 的 name 参数。 除了从 URL 接收参数外,我们还可以从请求接收参数。在 HTTP POST 请求,我们可以通过请求体来传递数据。在 Web API ,我们可以使用 [FromBody] 属性来指定请求参数。 例如,我们可以定义一个名为 "Create" 的 Action 方法,用于处理 HTTP POST 请求: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id) { return "value" + id; } // POST api/values public void Create([FromBody] string value) { // Do something with the value } } ``` 在上面的代码,我们添加了一个名为 "value" 的字符串类型参数,并使用 [FromBody] 属性来指定它是从请求接收参数。 最后,我们需要注意的是,如果我们需要接收复杂的对象类型参数,可以使用 [FromBody] 属性来指定对象的类型,并在方法使用该类型的实例来接收参数。例如: ```csharp public class User { public int Id { get; set; } public string Name { get; set; } } public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id) { return "value" + id; } // POST api/values public void Create([FromBody] User user) { // Do something with the user object } } ``` 在上面的代码,我们定义了一个名为 "User" 的类,并在 "Create" 方法使用它来接收请求传递的参数。通过这种方式,我们可以轻松地实现 Web API 参数接收功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值