0.0.1 • Published 5 years ago

apinit v0.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
5 years ago

apiio

一款实用的处理Serverless架构API网关触发器的工具,让你轻松处理请求和发送响应,可跨平台使用。

优点

  • 完美支持Serverless服务的API网关触发器的相关事件,简单易用

  • 相比原生写法,使用apiio后,能够大大减少开发工作量

  • 兼容从Koa框架迁移Serverless服务,只需要改动几行代码就可以适配

支持平台

目前appio已支持以下云计算平台的Serverless服务:

云平台服务名称服务英文名服务英文缩写地址appio支持
阿里云函数计算Function ComputeFChttps://www.aliyun.com/product/fc已支持
腾讯云云函数Serverless Cloud FunctionSCFhttps://cloud.tencent.com/product/scf开发中
华为云函数工作流Function GraphFGhttps://www.huaweicloud.com/product/functiongraph.html开发中
百度智能云函数计算Cloud Function ComputeCFChttps://cloud.baidu.com/product/cfc.html开发中
AWSLambdaLambdaALhttps://aws.amazon.com/cn/lambda开发中

安装

使用npm安装:

npm install apiio

如果访问速度较慢,建议使用cnpm安装:

cnpm install apiio

使用

引用

使用前,首先进行引用:

const Apiio = require('apiio')

初始化

方式一(推荐)

直接使用解构语法获取 request 和 response 对象:

const { request, response } = new Apiio(event, context, callback)

同时也支持以下别名方式(建议使用别名,更简短):

const { req, res } = new Apiio(event, context, callback)

方式二

直接获取app对象,以属性的方式使用 request 和 response 对象:

const app = new Apiio(event, context, callback)
app.request    // request对象
app.response   // response对象

同理,方式二也支持 req 和 res 别名。

const app = new Apiio(event, context, callback)
app.req    // request对象
app.res    // response对象

使用方式

你可以像使用普通对象那样使用 request 对象和 response 对象,例如可以使用 request.method 获取请求方法,使用 response.body='abc' 设置响应主体,等等。最终使用 response.send() 发送响应。

request.method         // 获取请求方法
response.body='abc'    // 设置响应主体为abc
response.send()        // 发送响应

完整的属性和方法请查看以下的请求对象(request)和响应对象(response)。

请求对象(request)

属性

request 对象用于接收API网关的入参。包含以下参数:

参数名数据类型含义说明示例
methodstring请求方法'GET'
headersobject请求头^headers{"user-agent":"Mozilla/5.0","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7"}
urlstring请求url^url'/path/to?name=mark&age=19'
pathstring请求路径^path'/path/to'
pathParamsobject请求路径参数{"post_id":123}
queryobject请求查询对象{"name":"mark","age":19}
querystringstring请求查询字符串'name=mark&age=19'
bodystring请求主体'abc'
ipstring请求客户端的IP地址'1.2.3.4'
idstring请求id,由API网关提供'FDB8CDF8-8DD8-425E-8944-FD9A675B9E0E'

以下属性不常用,但也提供了支持:

参数名数据类型含义说明示例
protocolstring协议,http或https'http'
rawBodybufferbuffer形式的请求主体,常用于图片类请求Buffer(3) 97, 98, 99

以下属性不建议使用,可用于调试:

参数名数据类型含义说明示例
rawHeadersobject由API网关传入,未做任何处理的原始请求头{"User-Agent":"Mozilla/5.0","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7"}

方法

别名支持

考虑到部分开发者的使用习惯,同时支持以下别名,使用别名和参数名具有完全一致的效果,您无须考虑使用别名引起的兼容性问题。

属性别名:

参数名别名
headersheader
bodybodydata
rawBodyrawData
queryqueries, param, params, queryParams, queryParameters
ipclientIp
pathpathname
pathParamspathParameters

方法别名:

参数名别名

响应对象(response)

属性

方法

设置响应状态码

可以通过以下2种方式设置响应的状态码,如果您未指定状态码,将默认设定为 200 。

方式一:使用 setCode 方法设置响应的状态码(推荐)

response.setCode(200)

方式二:直接对 statusCode 赋值设置响应的状态码

response.statusCode = 200

设置响应状态消息

可以通过以下2种方式设置响应的状态消息,如果您未指定状态消息,将自动按照HTTP协议规范自动填充。

方式一:使用 setMessage 方法设置响应的状态消息(推荐)

response.setMessage('ok')

方式二:直接对 statusMessage 赋值设置响应的状态消息

response.statusMessage = 'ok'

设置响应头

设置响应body

发送响应

使用 send 方法发送响应,------

别名支持

同样考虑到部分开发者的使用习惯,同时支持以下别名,使用别名和参数名具有完全一致的效果,您无须考虑使用别名引起的兼容性问题。

参数名别名
statusCodeheader
statusMessagemessage, statusText
setDatasetBody
bodydata
sendend

API网关配置

阿里云

使用演示

版本历史

0.0.1

5 years ago