从零开始搭建本地 Web API 服务器 (基于 IIS 和 .net6)

从零开始搭建本地 Web API 服务器

  • 部署环境:基于 .NET 的 IIS
  • API 开发环境:VS
  • 代码编写
    • 代码架构
    • 更改代码
    • 进行发布
  • 调试IIS
  • 测试 IIS 的 API 接口
  • 微信小程序调用函数访问API
  • 测试小程序访问 API 通信是否成功
  • 小程序要求的通信环境
    • 域名
    • TLS
    • 服务器证书
    • HTTPS
  • 完成环境搭建,小程序里测试一下

B/S 开发只分前端后端,即页面视图层和逻辑层,都在服务端运行。后来自学微信小程序,这种属于 C/S 架构,就需要开发服务端了。服务端的功能基本就是通信、处理数据、数据库读写,这里研究下简单的服务端:Web API 接口的本地化部署。

部署环境:基于 .NET 的 IIS

网上看很多都是基于JAVA的API接口部署,像 Spring、Node js 等。像我这种新手实在头疼。还好微软提供了基于 .NET 的API 部署,使用 IIS 就可以部署了,这里就主要研究这个。

API 开发环境:VS

既然是基于 .net 使用 IIS 部署,那开发肯定是使用 VS 了。

代码编写

具体的代码编写正在研究,VS 提供了相应的类接口函数。具体的代码怎么写回头再研究,先在网上找点现成代码稍更改下使用。

代码架构

网上找了个简单架构的API,是基于 .NET 6 的。

使用VB.NET 创建.NET6 Minimal Api[号称最小的Webapi](全网首发)

更改代码

在此基础上,将代码稍加改动。其实就是在 ModelWebAPIExt.vb 里增加自己需要的函数,返回需要的数据而已。

进行发布

使用VS进行发布,发布到文件夹。因为是基于 .net 6 的,所以框架选 .net 6 ,部署模式选择框架依赖,其实到这里是比较犹豫的,估计选择独立服务器的调试可能会方便点。不过还是选择了框架依赖,回头有机会再试一下独立

发布生成了应用后,复制所有文件到服务器,然后就是调试 IIS 了。

调试IIS

因为我用到服务器比较老,在安装 .NET 6 时候需要安装补丁包和 VC_redist_2015-2019 然后才能装 .net 6 。各框架依赖等装好后,发布倒是挺简单,和普通web发布是一样的。

测试 IIS 的 API 接口

发布完成后,就能进行测试了。因为 .net 6 自带 swagger 能够在浏览器里直接测试。

微信小程序调用函数访问API

微信小程序里有函数做接口调用: wx.request() 。具体使用方法可以查看小程序开发文档。这里只研究在小程序里使用此函数访问API接口。

小程序里调用函数后会报错,研究下报错信息的接口的开发文档,发现目前微信小程序通信有几点限制:

  1. 小程序只能跟指定的域名进行通信。每个微信小程序需要事先设置通讯域名,包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 WebSocket 通信(wx.connectSocket)
  2. 网络接口允许与局域网 IP 通信,但要注意 不允许与本机 IP 通信
  3. 如使用微信云托管作为后端服务,则可无需配置通讯域名

本着自己学习尽量别乱花钱的原则,决定使用现有的服务器和域名搭建小程序的服务端,所以不使用微信云了。

测试小程序访问 API 通信是否成功

在搭建符合小程序要求的 WebAPI 服务环境之前,先测试下现在的 API 是否可用。在小程序开发工具里,详情 -> 本地设置 下,有个 不校验合法域名TLS版本以及HTTPS证书 的选项。选上后就能在开发测试环境中测试 API 了。

通过测试发现可以使用,现在就差搭建符合小程序要求的环境了。

小程序要求的通信环境

小程序的通信环境需要以下几点:

  1. 注册域名
  2. TLS 1.2 以上
  3. 正式的服务器证书
  4. HTTPS

域名

域名只能通过注册机构进行注册。这里我使用现有的域名,分配不同的端口号映射给 API 服务器。

TLS

小程序貌似使用SSL还不行,只能更改成TLS。上网上查找下,使用这个方法及工具即可:

IIS服务器启用TLS1.1/TLS1.2的办法

服务器证书

服务器证书也是需要注册的,不过貌似有免费的可以注册。我使用了这个:

使用Certify来自动申请并配置Let’s Encrypt免费SSL证书到IIS8

在注册证书的过程中,出了点小问题:

这个工具貌似是通过读取 IIS 信息进行注册的,注册过程中会向绑定的物理文件夹中添加写东西进行通信测试,而注册的域名无法使用端口号进行映射。换句话说,需要和80端口下的使用IIS发布的文件夹相互通信。

我现有的服务器其80端口使用的是 Apache + php ,而不是 IIS 。又不能通过端口号映射到 IIS 发布的内容中,这就造成了一点麻烦。后来想到证书是发给具有域名的服务器的,而不是具体发布内容的,所以将 Apache 停掉,IIS 发布的内容改到 80 端口,再注册证书。结果通过了,然后再改回来也没事。

HTTPS

有了证书后,IIS 发布绑定时的协议就可以选择 HTTPS 了(绑定HTTPS需要选择证书,没证书貌似没法发布HTTPS)。

完成环境搭建,小程序里测试一下

到此,小程序需要的通信API算是搭建完成了,进入开发工具,取消不校验合法域名TLS版本HTTPS证书,重载项目,OK,通过~

你可能感兴趣的:(自学,笔记,前端,服务器,运维)