.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. 實體類
實體類是比較簡單的一種傳參方式,使用頻率很是高。javascript
- 添加實體類
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. 接收參數結果
java
設置容許跨域
若是有跨域需求支持,請設置容許跨域。在Stateup.cs中添加以下代碼。ajax
- 修改ConfigureServices方法,添加代碼以下:
//容許一個或多個來源能夠跨域 services.AddCors(options => { options.AddPolicy("CustomCorsPolicy", policy => { // 設定容許跨域的來源,有多個能夠用','隔開 policy.WithOrigins("https://localhost:5000")//只容許https://localhost:5000來源容許跨域 .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
- 修改Configure方法,添加代碼以下:
app.UseCors("CustomCorsPolicy");