博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[.NET WebAPI系列03] WebAPI Controller 中标准CRUD方法
阅读量:5030 次
发布时间:2019-06-12

本文共 3006 字,大约阅读时间需要 10 分钟。

【因】

   WebAPI的Controller中,一般都是下面四种方法:

  对应于数据操作是我们通常所说的CRUD.

  C对应post,R对应Get,U对应Put,D对应Delete。

  直接模仿VS 2012 WebAPI项目模板中的CRUD方法,R传回的是要查的值,CUD都是空,这样虽然也满足逻辑,

  但是一旦出错,没有有效的错误处理机制,如上一节Controller中的方法,虽然也可以使用,但不适合作为商用项目中的标准方法.

  所以在此总结出较标准的CRUD方法模板,以供参考。

 

【果】

  改编自第一节中的CRUD方法

  1.Read

  1)GET  api/courses/id

  不同于以前返回的是要查找的对象,现在返回的是HttpResponseMessage对象,其中可以包含要返回的对象值,一旦出错,会有恰当的

  错误代码及信息返回。

1 // GET api/courses/id 2         public HttpResponseMessage Get(int id) 3         {  4             HttpResponseMessage msg=null; 5             var ret=(from c in courses 6                      where c.id==id 7                      select c).FirstOrDefault(); 8             //todo: if null- should return 404 9             if (ret == null)10             {11                 msg = Request.CreateErrorResponse(HttpStatusCode.NotFound, "Course not found");12             }13             else14             {15                 msg = Request.CreateResponse
(HttpStatusCode.OK, ret);16 }17 return msg;18 }

  

     2.Create

   Post   api/courses/

1 // Post api/courses 2         public HttpResponseMessage Post([FromBody]course c) 3         { 4             c.id = courses.Count; 5             courses.Add(c); 6             //TODO:: should return a 201 with a location head 7             var msg = Request.CreateResponse(HttpStatusCode.Created); 8             msg.Headers.Location = new Uri(Request.RequestUri + c.id.ToString()); 9             return msg;10         }

    

  3.Update

1  // Put api/courses/id 2         public HttpResponseMessage Put(int id, [FromBody]course c) 3         { 4             HttpResponseMessage msg = null; 5             var ret = (from v in courses 6                        where v.id == c.id 7                        select v).FirstOrDefault(); 8             if (ret == null) 9             {10                 msg = Request.CreateErrorResponse(HttpStatusCode.NotFound, "Course not found");11             }12             else13             {14                 ret.title = c.title;15                 msg = Request.CreateResponse
(HttpStatusCode.Accepted, ret);16 msg.Headers.Location = new Uri(Request.RequestUri + c.id.ToString());17 }18 return msg;19 }

    

   4.Delete

1  // Delete api/courses/id 2         public HttpResponseMessage Delete(int id) 3         { 4             HttpResponseMessage msg = null; 5             var ret = (from c in courses 6                        where c.id == id 7                        select c).FirstOrDefault(); 8              9             if (ret == null)10             {11                 msg = Request.CreateErrorResponse(HttpStatusCode.NotFound, "Course not found");12             }13             else14             {15                 courses.Remove(ret);16                 msg = Request.CreateResponse
(HttpStatusCode.Gone, ret);17 }18 return msg;19 }

 

  

 

转载于:https://www.cnblogs.com/chutianshu1981/p/3288659.html

你可能感兴趣的文章
祝福我的朋友们:2017年新年快乐?
查看>>
动手动脑之String.equals()方法
查看>>
TCP/IP协议原理【转载】
查看>>
【转】 Android经验: proguard 阻碍 webview 正常工作
查看>>
WEB测试和APP测试区别
查看>>
[物理学与PDEs]第4章习题4 一维理想反应流体力学方程组的守恒律形式及其 R.H. 条件...
查看>>
[Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.1.3
查看>>
[数分提高]2014-2015-2第4教学周第2次课
查看>>
ansible进阶小技巧--tags
查看>>
JSP页面跳转方式
查看>>
发布高性能迷你React框架anu
查看>>
Python中Gradient Boosting Machine(GBM)调参方法详解
查看>>
利用DDE通信将PLC数据传输到EXCEL
查看>>
Eclipse 实用快捷键大全
查看>>
与非门和或门实现异或门
查看>>
golang统计出其中英文字母、空格、数字和其它字符的个数
查看>>
poj 1782 Run Length Encoding
查看>>
《自我介绍》
查看>>
在线考试系统设计思路
查看>>
p1150[noip2013普及]表达式求值
查看>>