.NET Core WebAPI post引數傳遞時后端的接收方式
- 物體類
- dynamic動態型別
- JObject引數
- 單值引數(字串引數)
A.前端Post請求代碼
$.ajax({
url: "/api/student/poststudent",
type: 'POST',
data:JSON.stringify({ name: "張三", age: 21 }),
success:function () {
},
dataType: "json",
contentType: "application/json"
});
B.后端接收引數方式
1. 物體類
物體類是比較簡單的一種傳參方式,使用頻率非常高,
- 添加物體類
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
- 后臺處理Post請求代碼
[HttpPost("{id}")]
public void PostStudent(Student student)
{
}
- 接收引數結果

2.dynamic動態型別
- 后臺處理Post請求代碼
[HttpPost("{id}")]
public void PostStudent(dynamic student)
{
var name = student.name;//name大小寫與前端引數一致
var age = student.age;
}
- 接收引數結果

3.JObject引數
- 引入Microsoft.AspNetCore.Mvc.NewtonsoftJson包
- 添加參考
using Newtonsoft.Json.Linq; - 后臺處理Post請求代碼
[HttpPost("{id}")]
public void PostStudent(JObject student)
{
}
- 接收引數結果

4.單值引數(字串引數)
只能傳一個字串引數,并且用單引號包一個雙引號,雙引號里為字串內容!
- 前端代碼與以上方式不同
$.ajax({
url: "/api/student/poststudent",
type: 'POST',
data:'"name=張三,age=21"',//這里是重點!用單引號包一個雙引號,雙引號里為字串內容!
success:function () {
},
dataType: "json",
contentType: "application/json"
});
- 后臺處理Post請求代碼
[HttpPost("{id}")]
public void PostStudent([FromBody] string values)
{
}
WebApi 方法引數前加[FromBody]標識,表示該引數值應該從請求的Body中獲取,而不是從URL中獲取,不加[FromBody]標識后臺取不到引數值,
4. 接收引數結果

設定允許跨域
如果有跨域需求支持,請設定允許跨域,在Stateup.cs中添加如下代碼,
- 修改ConfigureServices方法,添加代碼如下:
//允許一個或多個來源可以跨域
services.AddCors(options =>
{
options.AddPolicy("CustomCorsPolicy", policy =>
{
// 設定允許跨域的來源,有多個可以用','隔開
policy.WithOrigins("https://localhost:5000")//只允許https://localhost:5000來源允許跨域
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
- 修改Configure方法,添加代碼如下:
app.UseCors("CustomCorsPolicy");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63597.html
標籤:其他
