前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Web Function】产品测评,做个自己的密码生成器

【Web Function】产品测评,做个自己的密码生成器

原创
作者头像
tonglei0429
修改2021-08-23 18:41:03
6100
修改2021-08-23 18:41:03
举报
文章被收录于专栏:信息安全小学生

一、关于 Web Function

1. 什么是 Web Function?

来自腾讯云官方的定义:

https://cloud.tencent.com/document/product/583/56124

Web 函数(Web Function)是云函数的一种函数类型,区别于事件函数(Event Function)对于事件格式的限制,专注于优化 Web 服务场景,用户可以直接发送 HTTP 请求到 URL 触发函数执行

2. 为什么选择 Web Function?

相较于事件型函数,Web 函数在支持 Web 服务场景的能力上,具备以下优势:

  1. 处理性能高:API 网管免于 JSON 格式转换,请求处理环节减少;
  2. 开发体验好:可用 Node.js 原生接口,贴近原生 Web 服务;
  3. 框架支持全:常见的 web 框架都已经支持,比如:Express、Koa 等等;
  4. 部署难度低:自动创建 API 网关和 URL 以便调试及使用;
  5. 质量好把控:腾讯云提供了直接测试的能力,提升了保证代码质量的能力。

3. Web Function 是如何实现的?

来自腾讯云官网
来自腾讯云官网

执行顺序:

  1. 用户向 API 网关发送 HTTP 请求;
  2. API 网关为请求附加 "函数名","地域" 等相关请求头,并透传请求;
  3. 腾讯云内置 Proxy 实现 Nginx 转发,规范化请求信息,并发送到用户 Web Server;
  4. 用户的 Web Server 获取请求并处理。

此中涉及的公共请求头包括:

Header 字段

描述

X-Scf-Request-Id

当前请求 ID

X-Scf-Memory

函数实例运行时可使用的最大内存

X-Scf-Timeout

函数执行的超时时间

X-Scf-Version

函数版本

X-Scf-Name

函数名称

X-Scf-Namespace

函数所在命名空间

X-Scf-Region

函数所在地域

X-Scf-Appid

函数所有者的 Appid

X-Scf-Uin

函数所有者的 Uin

二、拥有 Web Function

0. 准备工作

要使用腾讯云 Web Function 功能,首先需要 注册腾讯云账号 完成 实名认证

1. 创建云函数

进入云函数主页:https://console.cloud.tencent.com/scf/index?rid=1

1. 访问云函数主页;2. 左侧选择函数服务
1. 访问云函数主页;2. 左侧选择函数服务
新建云函数
新建云函数
1. 通过模板创建;2. 选择 Express 框架;3. 选好后点击“下一步”
1. 通过模板创建;2. 选择 Express 框架;3. 选好后点击“下一步”
按需配置(默认也好),选定后点击完成
按需配置(默认也好),选定后点击完成
稍等片刻,看到成功标志后,点击“立即跳转”
稍等片刻,看到成功标志后,点击“立即跳转”
进入在线编辑页面
进入在线编辑页面
到此,我们看到了熟悉的 IDE 样式页面
到此,我们看到了熟悉的 IDE 样式页面
1. 打开 src/app.js 文件;2. 里面已经包含了默认的接口
1. 打开 src/app.js 文件;2. 里面已经包含了默认的接口
可以用测试工具直接进行测试,方法为:修改 path 字段值;配置参数和请求头;点击测试按钮;查看结果
可以用测试工具直接进行测试,方法为:修改 path 字段值;配置参数和请求头;点击测试按钮;查看结果
也可以在浏览器中直接访问测试接口(GET),比如页面类接口:/
也可以在浏览器中直接访问测试接口(GET),比如页面类接口:/
也可以在浏览器中直接访问测试接口(GET),比如资源类接口:/logo
也可以在浏览器中直接访问测试接口(GET),比如资源类接口:/logo
也可以在浏览器中直接访问测试接口(GET),比如JSON接口:/user
也可以在浏览器中直接访问测试接口(GET),比如JSON接口:/user
也可以在浏览器中直接访问测试接口(GET),比如带参数的JSON接口:/user/:id
也可以在浏览器中直接访问测试接口(GET),比如带参数的JSON接口:/user/:id
也可以在浏览器中直接访问测试接口(GET),比如异常页面 404:/404
也可以在浏览器中直接访问测试接口(GET),比如异常页面 404:/404
也可以在浏览器中直接访问测试接口(GET),比如异常页面 500:/500
也可以在浏览器中直接访问测试接口(GET),比如异常页面 500:/500

到这一步结束,创建云函数的过程就完成了,云函数服务也有了基础的处理能力,接下来就是实现我们自己的代码啦!

三、自定义接口:生成随机密码

1. 定义:

  1. Path: /gen-password
  2. Method: GET
  3. Params:

完整请求 “包含数字、小写字母、大写字母、特殊字符,长度为 6 位的密码”

代码语言:javascript
复制
https://service-9sbklqg7-1252211023.bj.apigw.tencentcs.com/release/gen-password?len=6&digit=1&upper=1&lower=1&sp_chars=!@#

2. 编写代码

在 app.js 的 app.get('/500', (req, res) => { ... });方法后增加以下代码:

代码语言:javascript
复制
// ↓↓↓ 生成随机密码 ↓↓↓
function randomInt(min, max) {
  return Math.floor(Math.random() * (max - min) ) + min;
}

function randomChar(strArr) {
  var str = strArr.join("");
  return str[randomInt(0, str.length)];
}

function shuffle(arr) {
  return arr.sort(function() {
    return .5 - Math.random();
  })
}

// 生成随机密码
const DIGITS = "0123456789";
const LOWER_CHARS = "abcdefghijklmnopqrstuvwxyz";
const UPPER_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
app.get('/gen-password', (req, res) => {
  let l_chars = req.query.lower ? LOWER_CHARS : "";
  let u_chars = req.query.upper ? UPPER_CHARS : "";
  let d_chars = req.query.digit ? DIGITS : "";
  let sp_chars = req.query.sp_chars || "";
  let len = req.query.len;

  var pswd = [];
  if(sp_chars.length) pswd.push(randomChar([sp_chars]));
  if(l_chars.length) pswd.push(randomChar([l_chars]));
  if(u_chars.length) pswd.push(randomChar([u_chars]));
  if(d_chars.length) pswd.push(randomChar([d_chars]));

  for(var i = pswd.length; i <= len; i++) {
    pswd.push(randomChar([d_chars, u_chars, l_chars, sp_chars]));
  }

  res.send(shuffle(pswd).join(""));
});
// ↑↑↑ 生成随机密码 ↑↑↑

3. 部署代码

代码插入完毕后,讲页面往下滑动,直到出现部署按钮,点击并完成部署。

4. 测试

在浏览器中访问测试地址

代码语言:javascript
复制
https://service-9sbklqg7-1252211023.bj.apigw.tencentcs.com/release/gen-password?len=6&digit=1&upper=1&lower=1&sp_chars=!@# 

得到结果如下。

看到随机生成的密码啦~

测评感受

优点

腾讯云的 Web Function 为我们提供了很舒服、方便的云服务环境,免去了装系统、搭环境的种种繁冗的工作,方便我们快速实现自己的业务,并且随处可用,也非常适合团队开发。我会推荐我身边的朋友、同事来体验 Serverless 模式开发。

上手容易程度 ★★★★★

操作流畅程度 ★★★★★

功能完善程度 ★★★★☆

部署方便程度 ★★★★☆

开发自由程度 ★★★★☆

希望加强的地方

目前的体验中,没有发现很严重的问题,速度也非常快,在线编辑也非常贴近本地开发。

不过还是有些小小的建议:

  1. 测试和部署按钮,都在在线编辑器的下方,这样代码编辑的显示和部署测试的显示很难同时出现,需要频繁的滑动屏幕,但同时,在线编辑器本身就有纵向滚动条,和浏览器的纵向滚动条很容易发生冲突,影响开发体验;
  2. 希望增加 Git 部署方式,本地开发的内容,同步到 Git 后,云服务器上可以自动从 Git 下载,完成代码部署,这样更加方便团队协作,提升开发体验。
  3. 每次刷新页面都需要从新加载编辑器,需要花费一定的时间。
  4. 日志部分刷新有些卡顿。

------

更多关于腾讯云 Web Function 的内容,敬请关注~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、关于 Web Function
    • 1. 什么是 Web Function?
      • 2. 为什么选择 Web Function?
        • 3. Web Function 是如何实现的?
          • 二、拥有 Web Function
            • 0. 准备工作
              • 1. 创建云函数
              • 三、自定义接口:生成随机密码
                • 1. 定义:
                  • 2. 编写代码
                    • 3. 部署代码
                      • 4. 测试
                      • 测评感受
                        • 优点
                          • 希望加强的地方
                          相关产品与服务
                          云函数
                          云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档