网上看很多都是基于JAVA的API接口部署,像 Spring、Node js 等。像我这种新手实在头疼。还好微软提供了基于 .NET 的API 部署,使用 IIS 就可以部署了,这里就主要研究这个。
既然是基于 .net 使用 IIS 部署,那开发肯定是使用 VS 了。
具体的代码编写正在研究,VS 提供了相应的类接口函数。具体的代码怎么写回头再研究,先在网上找点现成代码稍更改下使用。
网上找了个简单架构的API,是基于 .NET 6 的。
使用VB.NET 创建.NET6 Minimal Api[号称最小的Webapi](全网首发)
在此基础上,将代码稍加改动。其实就是在 ModelWebAPIExt.vb 里增加自己需要的函数,返回需要的数据而已。
使用VS进行发布,发布到文件夹。因为是基于 .net 6 的,所以框架选 .net 6 ,部署模式选择框架依赖,其实到这里是比较犹豫的,估计选择独立服务器的调试可能会方便点。不过还是选择了框架依赖,回头有机会再试一下独立。
发布生成了应用后,复制所有文件到服务器,然后就是调试 IIS 了。
因为我用到服务器比较老,在安装 .NET 6 时候需要安装补丁包和 VC_redist_2015-2019 然后才能装 .net 6 。各框架依赖等装好后,发布倒是挺简单,和普通web发布是一样的。
发布完成后,就能进行测试了。因为 .net 6 自带 swagger 能够在浏览器里直接测试。
微信小程序里有函数做接口调用: wx.request() 。具体使用方法可以查看小程序开发文档。这里只研究在小程序里使用此函数访问API接口。
小程序里调用函数后会报错,研究下报错信息的接口的开发文档,发现目前微信小程序通信有几点限制:
本着自己学习尽量别乱花钱的原则,决定使用现有的服务器和域名搭建小程序的服务端,所以不使用微信云了。
在搭建符合小程序要求的 WebAPI 服务环境之前,先测试下现在的 API 是否可用。在小程序开发工具里,详情 -> 本地设置 下,有个 不校验合法域名TLS版本以及HTTPS证书 的选项。选上后就能在开发测试环境中测试 API 了。
通过测试发现可以使用,现在就差搭建符合小程序要求的环境了。
小程序的通信环境需要以下几点:
域名只能通过注册机构进行注册。这里我使用现有的域名,分配不同的端口号映射给 API 服务器。
小程序貌似使用SSL还不行,只能更改成TLS。上网上查找下,使用这个方法及工具即可:
IIS服务器启用TLS1.1/TLS1.2的办法
服务器证书也是需要注册的,不过貌似有免费的可以注册。我使用了这个:
使用Certify来自动申请并配置Let’s Encrypt免费SSL证书到IIS8
在注册证书的过程中,出了点小问题:
这个工具貌似是通过读取 IIS 信息进行注册的,注册过程中会向绑定的物理文件夹中添加写东西进行通信测试,而注册的域名无法使用端口号进行映射。换句话说,需要和80端口下的使用IIS发布的文件夹相互通信。
我现有的服务器其80端口使用的是 Apache + php ,而不是 IIS 。又不能通过端口号映射到 IIS 发布的内容中,这就造成了一点麻烦。后来想到证书是发给具有域名的服务器的,而不是具体发布内容的,所以将 Apache 停掉,IIS 发布的内容改到 80 端口,再注册证书。结果通过了,然后再改回来也没事。
有了证书后,IIS 发布绑定时的协议就可以选择 HTTPS 了(绑定HTTPS需要选择证书,没证书貌似没法发布HTTPS)。
到此,小程序需要的通信API算是搭建完成了,进入开发工具,取消不校验合法域名TLS版本HTTPS证书,重载项目,OK,通过~