.NET web开发之WebApi初试水

前几天看了.NET的EF(Entity Framework),发现居然有这么先进的东西,只要操作几个类就可以完成数据库的增删查改,而且可以用数据库直接导出类(DB First)、也可以用类来生成数据库(Code First),简直太先进了。

    之前用EF做一个API服务的网站,每次要添加一条方法就要在View来解析传来的QueryString,然后调用Controller 来执行对数据库的增删查改。其实之前就一直都是听说过WebAPI,虽然一直没用过。今天抽空查了一下,完全符合我的应用需求——ASP.NET Web API 是一种框架,用于轻松构建可以被多种客户端(包括浏览器和移动设备)访问的 HTTP 服务,类似于各个大厂的开放接口。

  • 准备材料:

VS 2015 社区版 (安装了Web开发工具)

  • 基本步骤

基本按照向导来就行

选择WebAPI,然后稍等一会VS会帮你创建一个自带例程的工程

我们选择Controllers文件夹,右键选择添加“控制器”DefaultController ,选择一个WebAPI 空控制器

添加如下代码

public class DefaultController : ApiController
    {
        /// <summary>
        /// 设置一个对象
        /// </summary>
        /// <param name="aa">A</param>
        /// <param name="bb">B</param>
        /// <returns></returns>
        [HttpGet]
        public Exception Set(string aa, int bb=0)
        {
            return new Exception(aa+bb);
        }

        /// <summary>
        /// 获取一个值
        /// </summary>
        /// <returns>浮点</returns>
        public float Get()
        {
            return 2;
        }
    }

    然后我们Ctrl+F5运行试试,额,我们得到一个这样的主页。好像什么都没有,莫方。点击左上角的“API”就可以按到所有的API列表了,API和控制器一般是一一对应的。可以在最后找到我们写的一个类和里面的2个函数。这样简直太方便了了,省去了我之前View层的解析工作,可以让客户端远程调用服务器上的类。

clip_image002[12]

clip_image004[1]

附:

一.关于注释的问题

你看我们刚刚明明写了XML注释但是API的Description为什么用空的呢?这个Help页面肯定是有这个功能的。要打开这个功能还要进行一下几个操作:

1. 生成XML注释文件
调出项目属性-“生成”,把A这里给勾上(勾上这个的哈,如果你的类或方法要是没有注释,就好有提醒,不喜欢的话就在B出填上1591)

clip_image006

2. 让HelpPage读取XML
定位到Areas/HelpPage/App_Start/HelpPageConfig.cs,把Register方法的前两句注释去掉,在后面的路径填上你的XML的路径,OK。 image

3. 来看看效果

有了这个帮助页面,就不用给前台写单独的文档了,大家都明白!

clip_image010

二.设置默认返回Json

说了半年还么看看调用的效果,上图 clip_image012

这个返回的结果是XML的,虽然可以在请求是设置返回Json,但是有人不喜欢这样的话,就是要设置默认返回Json的话,可以这样做:

定位到App_Start/WebApiConfig.cs 的Register方法,添加一下代码即可

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 

//默认返回 json 

GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add( 

new QueryStringMapping("datatype", "json", "application/json")); 

//返回格式选择 datatype 可以替换为任何参数 

GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add( 

new QueryStringMapping("datatype", "xml", "application/xml"));
posted @ 2016-07-12 11:12  夏至千秋  阅读(3212)  评论(0编辑  收藏  举报