相信大家对于云服务并不陌生,而本次我们要做的就是将本地的API接口转存至Serverless并重新部署,绑定新域名,减轻我们的服务器负担,减少运行堵塞。由于网络空间测绘平台的域名还在备案,所以我就先将API接口上传到Serverless上。
![API接口上云|Serverless云函数服务部署实战插图 API接口上云|Serverless云函数服务部署实战插图](https://static.esw.eswlnk.com/2022/02/2022022417325795-1024x582.png)
服务选择
由于上次参加腾讯云举办的性能检测竞赛,我不经意间看到了腾讯云的云函数服务优惠,可以说是相当给力:就一个小站而言,一个月只需要几元甚至免费的价格,非常划算,所以我选择使用了腾讯云的函数服务。
![API接口上云|Serverless云函数服务部署实战插图1 API接口上云|Serverless云函数服务部署实战插图1](https://static.esw.eswlnk.com/2022/02/2022022416440768-1024x419.png)
云函数创建
地区选择
这里我的API接口使用PHP编写,所以在后续的配置方面与Node和python相比比较麻烦
首先,选择我们创建云函数服务的地区。因为我们并没有对用户地区的要求,所以这里我选择的是广州。如果你有海外用户,可以选择到新加坡、硅谷等地区。
![API接口上云|Serverless云函数服务部署实战插图2 API接口上云|Serverless云函数服务部署实战插图2](https://static.esw.eswlnk.com/2022/02/2022022416523741.png)
本次创建的属于API接口,所以在函数类型上我选择事件函数
。这里简单解释一下:事件函数
可以被任意触发器触发,而Web函数
在后续创建API网关的类型时,只能选择WSS访问,并且需要更改业务接口
编写函数代码
选择函数所需要的的运行环境,包含java
,python
,go以及node
,我选择PHP 7.2
这个环境。为了以后便于维护API接口,所以我们分批上传代码文件,或者自己手动编写函数。执行方法就对应着我们 所要运行的函数。
![API接口上云|Serverless云函数服务部署实战插图3 API接口上云|Serverless云函数服务部署实战插图3](https://static.esw.eswlnk.com/2022/02/2022022416582062.png)
对于这个云函数的执行方法,最开始还是把我弄得一头雾水,自己琢磨了好半天,最后还是通过官方给出的技术文档和调试解决了传参问题。
所以,为了让大家避这个坑,这里为大家简单解释下这个执行方法的参数和运行问题。
例如官方给出的函数例子:
<?php
$gl = 1;
function main_handler($event, $context) {
global $gl;
print "good";
print " job ";
print $gl;
print "\n";
$gl += 1;
error_log( "Hello, errors!" );
var_dump($event);
var_dump($context);
return "hello world";
}
?>
其中,body
、header
和queryString
等参数都是传入了$event
中,所以这里的$event
相当于取代了$_GET['']
,来获取传入的参数,例如name
、password
等。
再详细一点,例如$_GET['url']
,来获取传入的url
参数的值,而这里我们需要将它替换为 :
$event['queryString']['url']
(建议先对$event
使用json_decode(json_encode($event), true)
,方便后续的取值)
触发器创建
这里需要注意一点,如果你要让你的API接口可以公共访问,那么你就需要在触发方式
上选择API网关触发
,并规定请求方式和发布环境等等。
![API接口上云|Serverless云函数服务部署实战插图4 API接口上云|Serverless云函数服务部署实战插图4](https://static.esw.eswlnk.com/2022/02/2022022417111949.png)
创建完毕后,我们就可以在访问路径处看到当前函数的访问地址,如下图所示:
![API接口上云|Serverless云函数服务部署实战插图5 API接口上云|Serverless云函数服务部署实战插图5](https://static.esw.eswlnk.com/2022/02/2022022417130937.png)
API网关配置
在创建完云函数后,我们还需要对云函数绑定的API网关进行配置。大致流程和云函数创建相差不多,首先还是选择地区创建。这里需要注意,如果我们选择中国大陆以外的区域,腾讯云是要额外收取费用的,不过可以绑定未备案域名。如果没有什么其他的需求,选择华东、华南和华北的地区就行。
![API接口上云|Serverless云函数服务部署实战插图6 API接口上云|Serverless云函数服务部署实战插图6](https://static.esw.eswlnk.com/2022/02/2022022417173632.png)
前端配置
例如我这里的API网关配置,添加参数配置和请求方法以及跨域。
![API接口上云|Serverless云函数服务部署实战插图7 API接口上云|Serverless云函数服务部署实战插图7](https://static.esw.eswlnk.com/2022/02/2022022417200841.png)
这里参数设置对应刚才云函数中请求的参数,以及响应结果的返回类型配置,默认创建网关后的返回类型应该都是JSON
。如果需要其他类型,可以在API编辑中修改。
![API接口上云|Serverless云函数服务部署实战插图8 API接口上云|Serverless云函数服务部署实战插图8](https://static.esw.eswlnk.com/2022/02/2022022417224615.png)
域名绑定
这里我们在API管理中心,绑定了自定义域名。国内的API网关对于域名的要求是备案,如果没有备案又想要绑定自己的域名,那就只有选择国外的API网关地区。
![API接口上云|Serverless云函数服务部署实战插图9 API接口上云|Serverless云函数服务部署实战插图9](https://static.esw.eswlnk.com/2022/02/2022022417254893.png)
并且API网关可以自定义配置协议和SSL证书,以及路径映射。
结语
本次我将网络空间测绘平台的API接口已经全部搬迁到了Serverless上,非常方便,而且可以很清楚地看到API的调用次数以及运行情况,后续的小程序开发和更新,大部分也要用到云函数。
哈哈 很棒