asp.net webapi 使用小结
一星期前公司用webapi处理一些事情,自己总结一下用法。
1.创建一个空的webapi会默认有一下几个方法。
public class ValueController : ApiController { // GET api/value public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/value/5 public string Get(int id) { return "value"; } // POST api/value public void Post([FromBody]string value) { } // PUT api/value/5 public void Put(int id, [FromBody]string value) { } // DELETE api/value/5 public void Delete(int id) { } }
第一个IEnumerable<string> Get()
$.ajax({ url: "/api/value", type: "get", success: function (data) { alert(data); } });
第二个 string Get(int id)
$.ajax({ url: "/api/value/1", type: "get", success: function (data) { alert(data); } });
第三个 void Post([FromBody]string value) ,调用的时候比较特殊,我在data前面的键值给空的时候才能把值传输到后台去。
$.ajax({ url: "/api/value", type: "post", data: { '': "test" }, success: function (data) { //alert(data); } });
或者改造后台接收方法。用实体来接收值,可以接收到。
public class PostModel { public string value { get; set; } } public string Post([FromBody]PostModel value) { return "ok"; }
$.ajax({ url: "/api/value", type: "post", data: { 'value': "test" }, success: function (data) { //alert(data); } });
第四个 string Put(int id, [FromBody]PostModel value) 调用的时候,id必须包含在路径中,才能获取到。放在接收的实体中也是没用的。
$.ajax({ url: "/api/value/1", type: "Put", data: { 'value': "test" }, success: function (data) { //alert(data); } });
第五个 string Delete(int id) 调用跟第一个唯一的区别需要标明type:“Delete”
这是默认的几种使用方法,但是自己使用的时候感觉约束蛮多。然后我把它们全删了。
用法上不规范,但是用起来感觉比较舒服,感觉代码还是怎么写起来舒服怎么来吧,自己在api路由这里加了一项{action}这样用起来看着跟mvc区别不大。
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
代码就可以这样写了。
public class ValueController : ApiController { public List<string> GetList() { return new List<String> { "value1", "value2" }; } public List<string> GetTestList() { return new List<String> { "value1", "value2" }; } } $.ajax({ url: "/api/value/GetTestList", type:"post", success: function (data) { } });
对于webapi传参数,默认的都是从路径里提取的也就是get方式的传参。
public List<string> GetList(string id,string name) { return new List<String> { "value1", "value2" }; }
$.ajax({
url: "/api/value/GetList",
type: "get",
data: { "id": "1", "name": "三" },
success: function (data) {
}
});
$.ajax({
url: "/api/value/GetList?id=1&name=三",
type: "get",
success: function (data) {
}
});
如果需要传的字符串参数很多,get方式会报错,可以用post方式,这里需要注意的是不能用get开头,要么它只认get提交
public class PostModel { public string value { get; set; } public string id{ get; set; } } public List<string> List([FromBody]PostModel value) { return new List<String> { "value1", "value2" }; }
$.ajax({ url: "/api/value/List", type: "post", data: { "id": "1", "value": "01234567890123456789012345678901234567890123456789" }, success: function (data) { } });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端