以前接触的应用系统集成,不管是.net对.net,还是.net对java,主要使用的集成方式是用WebService方式进行集成。近期需要与另外一个基于java的开发平台集成,要求使用webapi进行集成。之前参与的项目,主要都是C/S架构程序的开发,几乎没有接触过webapi,本文用于入门学习webapi的创建。对于webapi的概念及其与WebService的区别,可以查看参考文献,这里就直接介绍如何使用vs创建webapi。
首先是确认一下从.net framework哪个版本开始支持创建WebAp,百度搜索了一些资料,WebApi的创建模板是从VS2012(参考文献8)开始提供的,支持创建WebAPI的.net framework是从4开始的(参考文献8)。个人安装的VS2019中,如果是选择.net framework3.5或者.net framework4,在创建ASP.NET web应用程序的导航中,是没有webapi的模板的,如下图所示。
选择.net framework4.5后,在创建ASP.NET web应用程序的导航中就包含有webapi模板。
创建好的初始界面如下图所示,初始的文件夹和文件的意义可以参考文献9,里面介绍的比较详细:
WebApiConfig文件中的Register类用于定义WebApi的调用路径模板。
项目初始化的Controllers文件夹中自带了HomeController和ValuesController,其中HomeController继承自Controller类,ValuesController类继承自ApiController类。
自动产生的ValuesController类代码看着比较好理解,应该包含的函数主要是对应着HTTP协议中的Get、Post、Put、Delete等方法,两个Get重载函数应该是在链接中带参数和不带参数的函数处理情况。
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
运行VS,在网页中输入地址:http://localhost:59944/api/values,显示的结果如下:
在网页中输入:http://localhost:59944/api/values/7,显示的结果如下:
上面的显示内容与ValuesController中对应的Get函数的返回数据相同。感觉这种方式与java中的Servlet的实现方式和调用方式类似。
本文可能连入门都算不上,只是验证了在VS中创建WebApi的过程,甚至都没有自己写代码,完全使用的是VS自动创建的代码。目前工作中使用的最多的集成还是WebService,后续会根据工作需要逐步了解学习WebApi。
参考文献:
[1]Web Api ——创建WebAPI,https://www.cnblogs.com/xtblog/p/8099382.html
[2]重温ASP.NET WebAPI(一)初阶,https://www.cnblogs.com/ruanyifeng/p/5455001.html
[3]SOAP webserivce 和 RESTful webservice 对比及区别,https://blog.csdn.net/huojiao2006/article/details/58061520
[4]Asp.Net WebApi核心对象解析(一),https://www.jianshu.com/p/063f5cf4b2af
[5]https://social.msdn.microsoft.com/Forums/vstudio/en-US/5036f149-a297-4f54-960e-3e5cc4c95f90/aspnet-web-api-net-framework-support?forum=wcf
[6]https://www.c-sharpcorner.com/article/introduction-to-asp-net-web-api/
[7]https://www.tutorialsteacher.com/webapi/create-web-api-project
[8]Web API(二):Web API概述,https://www.cnblogs.com/dotnet261010/p/8586424.html
[9]Web API(三):创建Web API项目,https://www.cnblogs.com/dotnet261010/p/8588646.html