当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

koa-to-serverless

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 鲜于凯歌
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

koa-to-serverless

只需要改一行代码就能够让你的 Koa 框架应用在 Serverless 架构环境上运行。

简介

Serverless 架构相对于自行部署的原生环境有巨大的优势(各云厂商对 Serverless 的介绍已经非常详细,这里就不赘述了),但是已有的代码想要直接迁移到 Serverless 架构上却不容易,主要面临以下几个困难:

(1)Serverless 架构环境与原生环境有所差异,原有的代码无法直接运行。

(2)各云厂商的 Serverless 实现都有所差异,无法兼容。

koa-to-serverless 就是为了解决这个问题诞生的。它能够让你只改一行代码就让你的原生 Koa 框架应用在 Serverless 架构环境上运行。

安装

直接使用 npm 命令安装即可:

npm i koa-to-serverless

使用

基础

下面这张图表示了使用原生环境和使用 Serverless 环境 Koa 框架代码的区别。虽然说改一行,实际上总共改2行,1行引入,1行使用。其他位置的代码你无需进行任何改动。

注意事项

(1)由于已经将请求的 body 植入了 app.request.body ,你无需再使用 koa-bodyparser 获取 body,请直接去掉对应代码。

(2)其他 Koa 的中间件,目前未发现不能使用的。若你在使用中发现某个中间件使用异常,请向我提 issue。

扩展

除了完全兼容 Koa 框架外,koa-to-serverless 还向 Koa 框架的 ctx 参数植入了一些属性,你可以直接使用。例如:ctx.id 。

参数名 类型 说明
id string API网关带入的请求ID

配置

由于云厂商平台限制,部分参数需要在云厂商的 API 网关处进行配置才能获取到。请按照您使用的云厂商平台进行设置。

阿里云

以下是 API 网关配置的注意事项:

(1)【请求路径】:配置为【 / 】,并勾选【匹配所有子路径】。路径这块执行逻辑API网关层透传,由 Koa 框架的 koa-router 中间件接管处理。

(2)【HTTP Method】:配置为【ANY】,相当于请求方法也是透传,由 Koa 框架的 koa-router 中间件接管处理。

(3)【入参请求模式】:配置为【入参透传】。

以下几个参数需要 API 网关提供,请直接按照图示参数名称填写。

其他云平台

开发中,待支持 ...

进阶

原理剖析

koa-to-serverless 实际上使用以下流程给 Koa 框架提供了一个兼容层。

以下这张图可以大致抽象地描述了 koa-to-serverless 作为兼容层提供的能力:

框架扩展

基于以上流程,以后的扩展会非常容易,扩展主要包含2个方面:

(1)支持 Koa 框架在其他云厂商的 Serverless 架构环境上运行。

(2)支持其他框架,例如 Express 等,在 Serverless 架构环境上运行。

以上2点扩展实际上都非常容易:

(1)第1个扩展只需要增加步骤2对应的触发器处理函数就可以了。

(2)第2个扩展只需要识别框架类型,然后改动步骤4,调用对应的框架的入口函数就可以了。

以上扩展以后会逐渐支持。

以下是支持情况:

Koa
阿里云 API 网关触发器
阿里云 HTTP 触发器
腾讯云 API 网关触发器
华为云 API 网关触发器
百度智能云 API 网关触发器
AWS API 网关触发器

反馈

任何使用上的问题,以及意见和建议,都可以向我提 issue,地址:https://github.com/inlym/koa-to-serverless/issues

  • 相信读完前面几篇有关 Serverless Component 文章的小伙伴已经体验到,它给我们开发带来的遍历。但是实际我们的日常开发项目中,并不仅仅只是单纯地一个项目部署那么简单,我们的敏捷开发流程中,还有开发、联调、测试、预发布、正式环境等关键词。那么有小伙伴就有疑惑了,我的业务开发完了,如何管理不同环境的配置呢?比如测试环境的数据库配置和正式环境的如何切换?于是抛转引入,写了此篇文章,来跟大

 相关资料
  • Koa

    Koa art-template view render middleware. support all feature of art-template. Install npm install --save art-template npm install --save koa-art-template Example const Koa = require('koa'); const ren

  • koa

    koa是Express的下一代基于Node.js的web框架,目前有1.x和2.0两个版本。 历史 1. Express Express是第一代最流行的web框架,它对Node.js的http进行了封装,用起来如下: var express = require('express'); var app = express(); app.get('/', function (req, res) {

  • Koa

    Koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。旨在提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。 Koa可以通过生成器摆脱回调,极大地改进错误处理。Koa核心不绑定任何中间件,但提供了优雅的一组可以快速和愉悦地编写服务器应用的方法。 示例代码: var koa = require('koa');var app = koa();//

  • aws-serverless-koa This library enables you to utilize AWS Lambda and Amazon API Gateway to respond to web and API requests using the Koa.js application framework Installation $ npm install --save aws

  • Koa - HelloWorld 以上便是全部了,我们重点来看示例,我们只注册一个中间件, Hello Worler Server: <?php $app = new Application(); // ... $app->υse(function(Context $ctx) { $ctx->status = 200; $ctx->body = "<h1>Hello Worl

  • koa-log4js A wrapper for log4js-node which support Koa logger middleware.Log message is forked from Express (Connect) logger file. Note This branch is use to Koa v2.x.To use Koa v0.x & v1.x, please ch