新出炉的国产 node web 框架 - 筷子

起步

筷子是一个后端框架,用来写接口(接收 http 请求,响应数据)。
如果你没接触过 node,请先了解一下 node。

环境准备

装个 node 就可以了。

撸起袖子,开始干!

初始化项目

mkdir kuaizi-go # 创建一个叫 kuaizi-go 的文件夹(当然是用来存放项目了)
cd kuaizi-go # 进入这个文件夹
npm init -y # 初始化 node 项目
npm install kuaizi # 安装筷子

hello-world

依国际惯例,先问候一下全世界。
新建一个文件,名字叫啥无所谓,但要以.js结尾。比如,就叫index.js吧,把下面这些代码放进去。

const { HandleRequest, Server } = require('kuaizi')

Server.start(8080) // 监听 8080 端口

HandleRequest.get('/', ctx => { // 处理方法为 GET,路径为根路径的请求
 return 'hello, world' // 直接返回 hello world 字符串
})

然后,在命令行,用 node 运行这个文件就行了:

node index.js

然后,打开浏览器,访问:http://localhost:8080/
之后,如果你收到一个 json 响应:{"code":0,"data":"hello, world"},那么恭喜,你已经口头上问候了全世界。

Handler

筷子就是为了处理 http 请求而生。
一个服务器后台程序,要处理好多请求,比如:

  • 获取用户数据
  • 新增用户
  • 更新用户信息
  • 删除用户
  • ……

一般来说,每有一个 http 请求,会需要一个 handler 来处理这个请求。
在这个 handler 里:(以“新增用户”请求为例):

  • 取出前端传来的用户数据
  • 调用 model 层,把用户数据存到数据库里
  • 响应,告诉前端存成了没有

处理特定方法、特定路径的请求

比如,处理一个方法为 post,路径为 /api/user的请求(可以使用 postman 模拟 post 请求):

const { HandleRequest, Server } = require('kuaizi')

Server.start(8080)

HandleRequest.post('/api/user', ctx => {
  return '你好像在试图增加一个用户,我现在假装你添加成功了。'
})

获取请求里的数据

http 请求可以传很多种格式的数据,目前最常用的两种就是 query 参数json 数据
假设有这样一个请求:
新出炉的国产 node web 框架 - 筷子_第1张图片
如果你想取出请求里的数据,可以这样:

const { HandleRequest, Server } = require('kuaizi')

Server.start(8080)

HandleRequest.post('/api/user', async ctx => {
  const query = ctx.getQuery() // { name: 'ming', tel: '999' }
  const data = await ctx.getJson() // { year: 6, grade: '一年级' }

  return {
    query, data
  }
})

自定义响应格式

有些特殊情况,我们不想(或不能)以 json 格式来响应数据。
这时候,取出 ctx 对象里的 res 对象(http.ServerResponse 实例)进行操作。
之后返回 Constant 模块下的 Nothing 对象,来告诉筷子:“我已经响应过了,你别掺和了”:

const { HandleRequest, Server, Constant } = require('kuaizi')

Server.start(8080)

HandleRequest.get('/', ctx => {
  const res = ctx.res // 从请求上下文中,拿出响应对象
  res.write('hell') // 写入 hell
  res.write('o') // 写入 o
  res.end() // 标记响应完成
  return Constant.Nothing // 必须返回这个
})

其中 ctx.res 是 node 中 Http 模块下的 ServerResponse 对象,具体用法请参考 node 的文档。
相应的,ctx.req 是 Http.IncomingMessage 对象,在处理上传文件等特殊的请求时,可以使用。

更多

筷子还有更多实用的功能:

  • AOP
  • Collector
  • Exception
  • 会话管理

更完整的文档在这里。

你可能感兴趣的:(web前端)