網(wǎng)站做成app網(wǎng)頁設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
目錄
Action方法的異步
Action方法參數(shù)
捕捉URL占位符
捕捉QueryString的值
JSON報(bào)文體
其他方式
Action方法的異步
- Action方法既可以同步也可以異步。
- 異步Action方法的名字一般不需要以Async結(jié)尾。
- Web API中Action方法的返回值如果是普通數(shù)據(jù)類型,那么返回值就會默認(rèn)被序列化為Json格式。
- Web API中的Action方法的返回值同樣支持IActionResult類型,不包含類型信息,因此Swagger等無法推斷出類型,所以推薦用ActionResult<T>,它支持類型轉(zhuǎn)換,從而用起來更簡單
[HttpGet]
public ActionResult<int> GetId(long id)
{if (id == 1){return 88;}else if (id == 2){return 99;}else{return NotFound("id錯誤");}
}
Action方法參數(shù)
捕捉URL占位符
- 在[HttpGet]、[HttpPost]等中使用占位符,比如{schoolName},捕捉路徑中的內(nèi)容,從而供Action方法的參數(shù)使用。
- 捕捉的值會被自動賦值給Action中同名的參數(shù);如果名字不一致,可以用[FromRoute(Name="名字")]
- /Person/GetStudent/school/MIT/class/2025
- [HttpGet("school/{ schoolName}/class/{ classNo}")]
捕捉QueryString的值
使用[FromQuery]來獲取QueryString中的值。如果名字一致,只要為參數(shù)添加[FromQuery]即可;而如果名字不一致,[FromQuery(Name = 名字)]。QueryString和Route可以混用。
[HttpGet("students/school/{schoolName}/class/{classNo}")]
public Person GetStudent([FromRoute(Name = "schoolName")] string schoolName, [FromRoute(Name = "classNo")] long classNo)
{return new Person(classNo, schoolName, 18);
}
JSON報(bào)文體
- Web API的開發(fā)模式下,Json格式的請求體是主流。
- 只要聲明一個(gè)模型類和Json請求的格式一致即可。
- 也是可以把從URL獲取參數(shù)、從請求報(bào)文體獲取數(shù)據(jù)等這些混合使用。
?[HttpPost("classId/{classId}")]public ActionResult<long> AddNew(long classId, StudentModel s)
- 一定要設(shè)定請求頭中的Content-Type為application/json,而且數(shù)據(jù)必須是合法的json格式。
其他方式
Web API中很少用的方式:
1、從Content-Type為multipart/form-data的請求中獲取數(shù)據(jù)的[FromForm]
2、從請求報(bào)文頭中獲取值的[FromHeader]。
?