项目中的web api知识总结

最近在做公司的项目,自己负责webapi的框架的搭建与开发,最近很忙,一直没时间对工作中遇到的知识点缺少个总结,现总结一下,对自己是个提升,如果个人的小点点小总结能对博友有帮助那也是善莫大焉.

(1)、 首先说一下c# dynamic,dynamic是FrameWork4.0的新特性.我在api中用了比较多的dynamic,首先个人认为dynamic能使代码变得优雅,可以省去定义多余的实体,dynamic是运行时决定类型有哪些属性,包括赋值和取值都可以随便指定属性,

例如:

dynamic sourceInfo = SqlDataHelper.GetWebDMDynamicData(sourceIdSql, new {id=3).FirstOrDefault();
                    if (null != sourceInfo)
                    {
                        item.SourceId = sourceInfo.SourceId;
                        item.DocType = sourceInfo.DocType;
                        item.InvestmentType = sourceInfo.InvestmentType;
                    }

以上代码中sourceInfo指定了dynamic,开发人员知道如果取值成功肯定会有SourceId属性,所以item.SourceId = sourceInfo.SourceId;赋值就不奇怪了.

同样如下代码也可以自己为dynamic随便指定属性:

1 dynamic data= null;
2 data= SqlDataHelper.GetWebDMDynamicData(sql, new { Id = id }).ToList().FirstOrDefault();
3 data.a= 124;
4 data.b= "test2";
5 data.c="test3";

可以为dynamic类型data随便指定属性,前提条件是在第(2)步骤时data的值不能为空,否则在第(3)步data是null,这时候就会出现空异常.

(2)、再谈论一下轻量级的ORM框架,这个框架网上已经充斥了大量的学习资料,本人只是对项目中的使用心得做些概括,不对之处欢迎指正.

我们知道调用数据库存储过程肯定有参数化,dapper提供了一个比较好的参数化对象DynamicParameters,上代码:

DynamicParameters dynamicParameters = new DynamicParameters();
            dynamicParameters.Add("@p_Id1", id1, DbType.String);
            dynamicParameters.Add("@p_Id2", id2, DbType.Int32);
            dynamicParameters.Add("@p_dateTime", dateTime, DbType.DateTime);
            List<dynamic> info =  conn.Query<T>(storeProcedureName,dynamicParameters, null, true, null, CommandType.StoredProcedure) as List<T>;

如果要指定执行存储过程,那么要指定CommandType.StoredProcedure关键字.

(3)、以下是List<T>转dataTable的方法,的确为类型转换省去了好多的代码,但是也有一个自己花了点时间没有解决的问题,就是T必须指定实体类型,而不能使用dynamic,否则type.GetProperties

取不到正确的属性,这样系统就必须多定义一个实体类传进来.

 public static DataTable ToDataTable<T>(IList<T> list)
        {
            //create propertyInfo
            List<PropertyInfo> pList = new List<PropertyInfo>();
            //get reflector interface
            Type type = typeof(T);
            DataTable dt = new DataTable();
            //add datatable column
            Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, Nullable.GetUnderlyingType(
            p.PropertyType) ?? p.PropertyType); });
            foreach (var item in list)
            {
                //create new row
                DataRow row = dt.NewRow();
                pList.ForEach(p => row[p.Name] = p.GetValue(item, null)??System.DBNull.Value);
                dt.Rows.Add(row);
            }
            return dt;
        }

好了,以上就是项目中的一些小小的总结,还有一些零碎的知识点不做过多描述了.通过项目过程中还有好多要学习的能力,特别是沟通能力,技术引导业务能力.

时间: 2024-11-08 23:01:28

项目中的web api知识总结的相关文章

在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式,虽然Web API或者WCF方式的调用,相对直接连接数据库方式,响应效率上略差一些,不过扩展性强,也可以调动更多的设备接入,包括移动应用接入,网站接入,Winfrom客户端接入,这样可以使得服务逻辑相对独立,负责提供接口即可.这种方式中最有代表性的就是当前Web API的广泛应用,促进了各个接入端

ASP.NET MVC4中调用WEB API的四个方法

http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml [IT168技术]当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强大的服务.然而,越来越多的互联网应用,希望将服务只是通过HTTP发布出去,而不是使用复杂的SOAP协议.为了解决这个问题,ASP.NET WebAPI就出现了.

.net 项目中应用Web Services(vs2012)

一.在asp.net项目中添加Web services1.新建一个asp.net项目(目前尚未验证是否可以在MVC项目中添加)2.在项目名上右击,选择添加→新建项→Web服务,输好名称后确定即可 二.在asp.net项目中使用Web Services1.在项目中添加对web services的引用 方法:在“引用”上右击,选择“添加服务引用”,在地址中输入web service的地址,在本例中输入的是“http://www.webxml.com.cn/WebServices/WeatherWeb

ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API

ASP.NET 5.0 的主要目标之一是统一MVC 和 Web API 框架应用. 接下来几篇文章中您会了解以下内容: ASP.NET MVC 6 中创建简单的web API. 如何从空的项目模板中启动,及添加控件到应用中. 如何配置 ASP.NET 5.0 管道. 在 IIS 外对立部署应用. 本文的目的是从空的项目开始,逐步讲解如何创建应用.当然,您也可以从“Starter Web” 模板开始,它默认包含了MVC 6.权限.记录等其他模块,同时也内置了有效的控制器和视图在其中. 创建空的 A

web项目中的web.xml元素解析

1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义).所有部署描述符文件的顶层(根)元素为web-app.请注意,XML元素不像HTML,他们是大小写敏感的.因此,web-App和WEB-APP都是不

在ASP.NET Core 2.2 中创建 Web API并结合Swagger

一.创建 ASP.NET Core WebApi项目 二.添加 三. ----------------------------------------------------------- 一.创建项目,WideWorldImporters.API,选项按照下列图操作 二.引用需要的Nuget包 Microsoft.EntityFrameworkCore.SqlServer Swashbuckle.AspNetCore Swashbuckle.AspNetCore包允许为Web API启用帮助页

不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例

摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me . 我的上一篇文章 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例 借助了Fiddler工具,你可能会问,如果不借助工具,我只有浏览器可行吗?这就是本文要讲述的. 我们知道一般浏览器按F12会出来开发者工具,我们以Chrome为例来讲解

MVC5项目中添加Wep API

一.查看MVC版本,决定你有没有必要看这篇文章 打开web.config,看到以下内容 <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.

MFC中调用web api

使用COM组件来调用,需要catch com error. IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL; BSTR bstrString = NULL; HRESULT hr; ? try { hr=pIXMLHTTPRequest.CreateInstance("Msxml2.XMLHTTP.6.0"); SUCCEEDED(hr) ? 0 : throw hr; ? hr=pIXMLHTTPRequest->open("PO