最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用ASP.NET?Web?API構(gòu)建Restful?API

 更新時(shí)間:2022年04月26日 10:16:16   作者:農(nóng)碼一生  
這篇文章介紹了使用ASP.NET?Web?API構(gòu)建Restful?API的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、前言

RESTful API 是基于HTTP協(xié)議產(chǎn)生的一種相對(duì)簡(jiǎn)單的API設(shè)計(jì)方案;

RESTful 的核心是 everything is a “resource”,所有的HTTP action,都應(yīng)該是相應(yīng)resource上可以被操作和處理的,而API 就是對(duì)資源的管理操作,而這個(gè)具體操作是由 HTTP action 指定的。

使用HTTP的GET、POST、DELETE、PUT來(lái)表示對(duì)于資源的增刪改查。

  • GET:讀?。≧ead)
  • POST:新建(Create)
  • PUT:更新(Update)
  • DELETE:刪除(Delete)

學(xué)習(xí)資料準(zhǔn)備:

(1)用于測(cè)試的實(shí)體類(lèi):

public class Student
{
    public string StuNo { get; set; }    //學(xué)號(hào)
    public string StuName { get; set; }  //姓名
    public string StuSex { get; set; }   //性別
}

(2)模擬的測(cè)試數(shù)據(jù)(編寫(xiě)在webapi類(lèi)的構(gòu)造函數(shù)中):

public static List<Student> StuList { get; set; }
public ServerController()
{
    StuList = new List<Student>();
    StuList.Add(new Student { StuNo = "001", StuName = "孫悟空", StuSex = "男" });
    StuList.Add(new Student { StuNo = "002", StuName = "豬八戒", StuSex = "男" });
    StuList.Add(new Student { StuNo = "003", StuName = "白骨精", StuSex = "女" });
}

二、獲取所有數(shù)據(jù)

API接口:

[HttpGet]
public List<Student> GetList([FromBody]dynamic obj)
{
	return StuList;
}

三、獲取詳情

API接口:

[HttpGet]
public Student GetDetail(string id)
{
	Student stu = StuList.SingleOrDefault(p => p.StuNo.Equals(id));
	return stu;
}

四、新增數(shù)據(jù)

API接口:

[HttpPost]
public IHttpActionResult Add([FromBody] Student stu)
{
    StuList.Add(stu);
    return Json(new { msg = "添加成功!",data=StuList });
}

五、修改數(shù)據(jù)

API接口:

[HttpPut]
public IHttpActionResult Update(string id, [FromBody] Student stu)
{
    Student model = StuList.SingleOrDefault(p => p.StuNo.Equals(id));
    if (model == null)
    	return Json(new { msg = "修改的數(shù)據(jù)不存在!" });
    model.StuNo = stu.StuNo;
    model.StuName = stu.StuName;
    model.StuSex = stu.StuSex;
    return Json(new { msg = "修改成功!", data = model });
}

六、刪除數(shù)據(jù)

API接口:

[HttpDelete]
public IHttpActionResult Delete(string id)
{
    Student model = StuList.SingleOrDefault(p => p.StuNo.Equals(id));
    if (model == null)
    	return Json(new { msg = "刪除的數(shù)據(jù)不存在!" });
    StuList.Remove(model);
    return Json(new { msg = "刪除成功!", data = StuList });
}

七、特性路由

(1) 基本路由映射

API接口:

[HttpGet]
[Route("api/Route/Basic")]
public IHttpActionResult GetBasic()
{
	return Json(new { msg = "測(cè)試基本的特性路由!" });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Basic

(2) 路由映射參數(shù)

API接口:

[HttpGet]
[Route("api/Route/Param/{id}/{name}")]
public IHttpActionResult Get2(string id,string name)
{
	return Json(new { msg = "測(cè)試路由映射參數(shù)!",data = new { id= id,name=name } });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Param/001/孫悟空

(3) 多重特性路由

API接口:

[HttpGet]
[Route("api/Route/Multiple1/{id}/{name}")]
[Route("api/Route/Multiple2/{id}/{name}")]
public IHttpActionResult Get3(string id,string name)
{
	return Json(new { msg = "測(cè)試多重特性路由!",data = new { id= id,name=name } });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Multiple1/001/孫悟空

http://localhost:60650/api/Route/Multiple2/001/孫悟空

(4) 缺省參數(shù)路由

API接口:

[HttpGet]
[Route("api/Route/Default/{id}/{name?}")]
public IHttpActionResult Get4(string id, string name="孫悟空")
{
    return Json(new { msg = "測(cè)試缺省參數(shù)路由!", data = new { id = id, name = name } });
}

[HttpGet]
[Route("api/Route/Default/{id}/{name=孫悟空}")]
public IHttpActionResult Get4(string id, string name)
{
	return Json(new { msg = "測(cè)試缺省參數(shù)路由!", data = new { id = id, name = name } });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Default/001

(5) 參數(shù)約束路由

ASP.NET Web API內(nèi)置約束有下面這些:

{x:alpha} 約束大小寫(xiě)英文字母
{x:bool}
{x:datetime}
{x:decimal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} 約束長(zhǎng)度范圍
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)} //約束值的范圍
{x:regex(正則表達(dá)式)}

可以設(shè)置多個(gè)約束:

[Route("api/Route/orders/{id:int:min(1)}")]

API接口:

[HttpGet]
[Route("api/Route/Check/{id:range(1,100)}/{name}")]
public IHttpActionResult Get5(int id, string name)
{
	return Json(new { msg = "測(cè)試參數(shù)約束路由!", data = new { id = id, name = name } });
}

接口訪(fǎng)問(wèn)地址:(以下地址可以正常訪(fǎng)問(wèn)接口)

http://localhost:60650/api/Route/Check/11/孫悟空

接口訪(fǎng)問(wèn)地址:(以下地址無(wú)法訪(fǎng)問(wèn)接口)

http://localhost:60650/api/Route/Check/101/孫悟空

(6) 通配符(*)路由變量

API接口:

[HttpGet]
[Route("api/Route/Date/{id:range(1,100)}/{name}/{*birthday}")]
public IHttpActionResult Get6(int id, string name,DateTime birthday)
{
	return Json(new { msg = "*使用!", data = new { id = id, name = name,birthday = birthday.ToString("yyyy年MM月dd日") } });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Date/1/jack/1988-8-8

接口訪(fǎng)問(wèn)地址:(此地址如果在路由中沒(méi)有*則無(wú)法訪(fǎng)問(wèn),因?yàn)槌绦驎?huì)認(rèn)為“1988/8/8”是三個(gè)參數(shù),而不是一個(gè)參數(shù))

http://localhost:60650/api/Route/Date/1/jack/1988/8/8

(7) 路由映射復(fù)雜參數(shù)

給實(shí)體類(lèi)添加特性使其支持綁定:

[ModelBinder]
public class Student
{
	public string StuNo { get; set; }    //學(xué)號(hào)
	public string StuName { get; set; }  //姓名
	public string StuSex { get; set; }   //性別
}

方案一API接口:

[HttpGet]
[Route("api/Route/Class/{stu.StuNo}/{stu.StuName}/{stu.StuSex}")]
public IHttpActionResult Get7(Student stu)
{
	return Json(new { msg = "路由映射復(fù)雜參數(shù)!", data = stu });
}

方案一接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Class/001/jack/man

方案二API接口:

[HttpGet]
[Route("api/Route/Class")]
public IHttpActionResult Get7(Student stu)
{
	return Json(new { msg = "路由映射復(fù)雜參數(shù)!", data = stu });
}

方案二接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Route/Class?stu.StuNo=001&stu.StuName=jack&stu.StuSex=man

(8) 路由前綴

在控制器類(lèi)上定義路由前綴:

[RoutePrefix("api/Prefix")]
public class PrefixController : ApiController
{

}

路由前綴API接口:

[Route("Basic")]
public IHttpActionResult Get1()
{
	return Json(new { msg = "測(cè)試路由前綴!" });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Prefix/Basic

取消路由前綴API接口:

[Route("~/api/Cancel/Basic")]  //通過(guò)~/取消路由前綴
public IHttpActionResult Get2()
{
	return Json(new { msg = "取消路由前綴!" });
}

接口訪(fǎng)問(wèn)地址:

http://localhost:60650/api/Cancel/Basic

到此這篇關(guān)于使用ASP.NET Web API構(gòu)建Restful API的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .NET Core 實(shí)現(xiàn)微信小程序支付功能(統(tǒng)一下單)

    .NET Core 實(shí)現(xiàn)微信小程序支付功能(統(tǒng)一下單)

    最近公司研發(fā)了幾個(gè)電商小程序,還有一個(gè)核心的電商直播,只要是電商一般都會(huì)涉及到交易信息,離不開(kāi)支付系統(tǒng),這里我們統(tǒng)一實(shí)現(xiàn)小程序的支付流程。感興趣的朋友跟隨小編一起看看吧
    2019-09-09
  • ASP.NET環(huán)境下為網(wǎng)站增加IP過(guò)濾功能

    ASP.NET環(huán)境下為網(wǎng)站增加IP過(guò)濾功能

    通過(guò)深入的交流和溝通,確認(rèn)了該發(fā)電廠(chǎng)在企業(yè)網(wǎng)站用戶(hù)訪(fǎng)問(wèn)控制方面的改進(jìn)要求
    2009-06-06
  • asp.net 彈出警告窗口實(shí)現(xiàn)代碼

    asp.net 彈出警告窗口實(shí)現(xiàn)代碼

    提供一個(gè)可選“是”“否”的彈出窗口,若選是,則跳到url1,選否則跳到url2
    2009-07-07
  • Asp.net cookie的處理流程深入分析

    Asp.net cookie的處理流程深入分析

    一說(shuō)到Cookie我想大家都應(yīng)該知道它是一個(gè)保存在客戶(hù)端,當(dāng)瀏覽器請(qǐng)求一個(gè)url時(shí),瀏覽器會(huì)攜帶相關(guān)的Cookie達(dá)到服務(wù)器端,需要的朋友可以了解下
    2012-12-12
  • 獲取Repeter的Item和ItemIndex/CommandArgument實(shí)現(xiàn)思路與代碼

    獲取Repeter的Item和ItemIndex/CommandArgument實(shí)現(xiàn)思路與代碼

    Repeater控件,放在ItemTemplate內(nèi)的銨鈕OnClick之后,獲取Repeater的Item,ItemIndex,CommandArgument,CommandName以及綁定的字段值附演示動(dòng)畫(huà)感興趣的朋友可以了解下
    2013-01-01
  • asp.net的公共變量聲明問(wèn)題(解決)

    asp.net的公共變量聲明問(wèn)題(解決)

    前段時(shí)間有個(gè)項(xiàng)目中登錄的時(shí)候碰到了聲明公共變量的情況,用戶(hù)類(lèi)型分為二種類(lèi)型,所以不同類(lèi)型用戶(hù)登錄的時(shí)候所走的情況不一樣,目前用AB分別代表二類(lèi)用戶(hù)。
    2013-03-03
  • .NET?Core?實(shí)現(xiàn)緩存的預(yù)熱的方式

    .NET?Core?實(shí)現(xiàn)緩存的預(yù)熱的方式

    本文介紹了緩存預(yù)熱在.NETCore應(yīng)用中的重要性以及如何實(shí)現(xiàn)緩存預(yù)熱,緩存預(yù)熱可以提升用戶(hù)體驗(yàn)、降低數(shù)據(jù)庫(kù)壓力、提高系統(tǒng)穩(wěn)定性,感興趣的朋友一起看看吧
    2025-03-03
  • SqlDataSource 鏈接Access 數(shù)據(jù)

    SqlDataSource 鏈接Access 數(shù)據(jù)

    如何用AccessDataSource鏈接有密碼的access數(shù)據(jù)庫(kù)總是會(huì)報(bào)錯(cuò),替代方法是用SqlDataSource 鏈接Access 數(shù)據(jù)。
    2009-04-04
  • .net core EF Core調(diào)用存儲(chǔ)過(guò)程的方式

    .net core EF Core調(diào)用存儲(chǔ)過(guò)程的方式

    這篇文章主要給大家介紹了關(guān)于.net core EF Core調(diào)用存儲(chǔ)過(guò)程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net core EF Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • .net 彈出消息框后導(dǎo)致頁(yè)面樣式變亂解決方法

    .net 彈出消息框后導(dǎo)致頁(yè)面樣式變亂解決方法

    點(diǎn)擊按鈕,執(zhí)行提交操作,彈出消息框后,頁(yè)面的樣式變亂,已經(jīng)確定了不是css樣式的問(wèn)題,接下來(lái)與大家共同探討下究竟是什么問(wèn)題導(dǎo)致頁(yè)面變亂
    2013-04-04

最新評(píng)論

临桂县| 永兴县| 泗洪县| 竹北市| 桐柏县| 综艺| 淮安市| 湄潭县| 湘西| 新乐市| 崇明县| 石泉县| 顺义区| 临漳县| 博湖县| 从江县| 罗定市| 华宁县| 淮北市| 武安市| 平利县| 团风县| 伊金霍洛旗| 陆丰市| 夏津县| 宁陵县| 永昌县| 南康市| 长武县| 彝良县| 大兴区| 泗阳县| 开化县| 特克斯县| 普格县| 三亚市| 涞源县| 临海市| 灯塔市| 乳山市| 莱州市|