.NET web开发之WebApi初试水

时间:2023-03-08 21:50:33
.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开发工具)

  • 基本步骤

基本按照向导来就行

.NET web开发之WebApi初试水

.NET web开发之WebApi初试水

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

.NET web开发之WebApi初试水

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

.NET web开发之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=)
{
return new Exception(aa+bb);
} /// <summary>
/// 获取一个值
/// </summary>
/// <returns>浮点</returns>
public float Get()
{
return ;
}
}

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

.NET web开发之WebApi初试水

.NET web开发之WebApi初试水

附:

一.关于注释的问题

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

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

.NET web开发之WebApi初试水

2. 让HelpPage读取XML
定位到Areas/HelpPage/App_Start/HelpPageConfig.cs,把Register方法的前两句注释去掉,在后面的路径填上你的XML的路径,OK。 .NET web开发之WebApi初试水

3. 来看看效果

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

.NET web开发之WebApi初试水

二.设置默认返回Json

说了半年还么看看调用的效果,上图 .NET web开发之WebApi初试水

这个返回的结果是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"));