问题来源是实际使用中遇到的问题,公司希望我们接通金蝶(一个财务系统)API,把数据显示在网站上,翻看金蝶方面给的API文档,大部分都是在.NET 环境下适配的,但是我们的网站是用PHP做的,这方面文档比较少,考虑到后期可能手机端也要适配这个功能,干脆就做成一个WebAPI算了。
注:本文使用的工具是Visual Studio 2017
本文主要针对小白,自己想搭建WebAPI又不知道从哪下手的作为参考
大神请批评指正
WebAPI是网络应用程序接口。包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。
我们在此想做的是通过WebAPI访问到数据库里的内容,通过GET方式展示出来,给其他终端调用。
注意:本文使用的不是专门的WebAPI组件。而是简单的Web窗体(方法类似,下文详解)
简单来说,MVC主要用来建站,而WebAPI更适合用来构建http服务,MVC更像是提供了一整套完整的开发框架,而WebAPI主要提供了一套RestfulAPI的开发框架,提供了较为完整的http语义支持,主要用来做开放API,更抽象。
3.1 创建一个简单项目
注意:框架选择4.0的话只有一个组件可以使用, 框架选择4.5,我们在这里可以看到在4.5框架下有MVC和WebAPI可以使用,但是我们在这里选择空窗体,看起来更简洁。因为我当时当时也打算要用WebAPI的,但是一开始没看懂他的访问控制,所以采用这种稍微笨一点的办法。
我们这里有一个解决方案和一个方案,为了更清楚的表示,我们新建一个控制台程序,专门用来访问数据的。(新建其他的也行主要是为了专门访问数据用的)
3.2 生成数据
我们在这里做了测试数据,当然这里可以根据你的需求来变更,返回的可以是list,可以是json,可以是数组等。这个项目的主要作用就是生成可访问的数据。
3.3 访问数据
我们新建一个文件夹(右击WebAP-添加-新建文件夹),主要是为了后期可能会区分开来不同的API。
我们右击文件夹,右击-添加-新建项-选择Web窗体。
我们在这里添加刚才3.1新建程序的引用
在first文件下的程序代码里新建一个方法用来接收数据,注意这里我们的student要变更级别为public,否则不允许访问。
3.4 访问控制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebAPI.first
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 页面 载入,验证部分
if (user == "admin")
{
if (pwd == "123456")
{
//用户名密码都正确,执行方法
GetStudent();
Response.End();
return;
}
else
{
//密码不正确
Response.Write("password error!");
Response.End();
return;
}
}
else
{
//连用户名也不正确
Response.Write("user error!");
Response.End();
return;
}
}
//访问控制
protected string user
{
get
{
return Request["user"] ?? "";
}
}
protected string pwd
{
get
{
return Request["pwd"] ?? "";
}
}
//用来接收数据
public void GetStudent()
{
string tt = ConsoleApp_get.Student.StudentGetAge();
Response.Write(tt);
}
}
}
到此为止,我们的程序基本完成了,可以简单运行一下看看是不是有数据显示。下面我们来试一下发布。
我们把网站项目设置为启动项目。先右击解决方案,选择生成解决方案。
然后我们右击WebAPI网站这个项目选择发布。
在上一步中我们成功发布了网站, 下面说一下本地IIS网站搭建与访问。
打开IIS,右击网站,选择添加网站,选择物理路径(就是刚才我们发布网站的路径)
点击确定
当我访问网站是会出现如下界面,这是因为你没有设置的原因。
当我们在浏览器中输入以下地址时即可正常访问,可以看出地址端口后面是文件夹名称,文件下一级是我们Web窗体名称,后面的问好就是访问控制部分。
http://localhost:8088/first/mypage.aspx?user=admin&pwd=123456
其实编写WebAPI的方式有很多,本文只是列举了我会的一种,并不专业,希望给像我一样的初学者使用。