我们在使用lor的过程中,处理req的参数和res的返回,大抵上是这样的:

Router:post("/submit", function(req, res, next)    local Id = tonumber(req.body.id)    local body = req.body    if Id == nil thenlocal data = req.body.data        if data == nil thenres:json({code = errorCode.requestParams,})        returnendbody = cjson.decode(data)examId = body.examId    end    local result, msg = Service:submit(id,data)    if type(result) == "number" thenif not msg thenmsg = ""endres:json({code = result,msg = msg,})           return    end    res:json({code = 99999,data = result})end)

这里面有几个问题,可以看出:

  1. 我们需要对每一次的请求参数进行处理和判断

  2. 我每次在返回数据时,都要自己加上code,result 这种东西

直接导致了,代码过重复,好多东西都要反复的复制,粘贴

那么,在已经抽像了错误处理机制的基础上,我们对res和req进行需要进行进一步的封装

中间件的加入

加入中间件 httpmiddle.lua ,文件如下:

localload'cjson'locallogload'libs.log.log_helper'localload"common.error"locallocallocalfunction(req,res,next)function req:get(name,params)local        ifnilthen        endifnilandthen        endifnilthen' 缺少'        endifnilthenforinipairsdoifnilthen',''中缺少'endendendreturnendfunction res:send(ret)99999        endnextendreturn

然后在我们的应的顶层路由加上这个中间件,如果已经加入了错误处理机制,那么代码就变成了:

Router:post("/submit", function(req, res, next)local Id = tonumber(req:get('Id'))        local body = req:get('body')        local result, msg = Service:submit(Id,body)res:send(result)end

嗯,就是要足够好看。

附:错误处理的中间件机制看这里:基于 lor.index 的错误处理机制设计

散养程序猿

野生架构狮

二流搬砖工

三流摄影师

假正经真逗比

装文艺实二逼

所以,这么一个公众号里,会有代码,有段子,有美图,有鸡汤,反正,乱七八遭的,没准碰上哪个刚好就烦到您了呢

啥也不说,扫码关注吧

改造Lor的res和req相关推荐

  1. ajax中res和req,javascript – 来自AJAX调用的res.redirect

    我正在尝试在ajax put请求之后进行重定向.我打算使用纯JS客户端进行验证. 客户: $(document).ready(function() { login = () => { var u ...

  2. node 里的 req 与 http 和 req.on() res.on()

    const req = http.request(options,(res) => {console.log(`状态码:${res.statusCode}`);console.log(`响应头: ...

  3. Express HTTP请求中的请求消息(req)和响应消息(res)

    本文摘抄自菜鸟教程 Express 4.x API中文文档 Request req 对象代表了一个HTTP请求,其具有一些属性来保存请求中的一些数据,比如query string,parameters ...

  4. Node——express模块中的req,res参数

    express模块中的req,res参数的常用属性方法 const express = require('express'); const router = express.Router() rout ...

  5. express模块中的req,res参数

    express模块中的req,res参数的常用属性方法 const express = require('express'); const router = express.Router() rout ...

  6. OpenResty Web框架lor发布0.1.0稳定版

    在经过9个分支版本的迭代开发后,lor终于发布了0.1.0版本.同时带来了更全面的文档和API介绍,以及一个全站的示例项目OpenResty China.关于lor的详细介绍如下: Lor是一个运行在 ...

  7. openresty lor框架路由解析

    app 中间件 router 请求处理过程 lor 不足 lor框架 openresty web框架lor,lor 是一个基于 ngx_lua的 MVC 框架,其 API 很类似于 Node 社区的著 ...

  8. 了解Express.js中的res对象

    The res object in Express.js, short for response, gives you a simple interface to respond to HTTP re ...

  9. express框架中res和rep属性

    express框架中res和rep属性 const express = require('express'); const router = express.Router() router.get(' ...

最新文章

  1. LeetCode题组:第7题-整数反转
  2. linux centos7.6.1810安装nfs命令整理
  3. 最新知识图谱论文清单,就算看不懂也会忍不住收藏
  4. 事件驱动数据管理 微服务和分布式数据管理问题
  5. 7-4 sdut-求两个整数之和(II)
  6. Android使用XML全攻略(1)
  7. 和浏览器并发请求数有关的一些前端技术
  8. 使用C#的泛型队列Queue实现生产消费模式
  9. 不敢相信?System.currentTimeMillis() 居然存在性能问题
  10. STLink MID Keli Debug下载程序时候出现cannot access target shutting down debug session的解决
  11. 如何卸载新版Edge并禁用自动更新
  12. 用selenium模拟QQ空间登录
  13. docker容器2:镜像制作
  14. 判断手机是否有虚拟键盘
  15. [cocos2dx]基于Cocos2d-x引擎的游戏框架设计
  16. Nginx + uWSGI + Python + Django搭建一款只属于自己的壁纸网站
  17. 中考计算机试题ppt判断,2015中考信息技术试题PPT操作题2-26(终)
  18. 重新启动SQLSever服务
  19. 封装、继承和多态以及抽象类和接口
  20. 复旦大学邱锡鹏:若优化顺利,MOSS三月底开源;库克或被踢出苹果董事会;华为云联合CSDN发布智能化编程助手Snap|极客头条

热门文章

  1. BM64-最小花费爬楼梯
  2. 安卓手机与蓝牙模块联合调试(三)—— 单片机蓝牙控制LED灯亮灭(下)
  3. 找不到工作怎么办?常为工作担忧?可光担忧并没有怎么用
  4. FF新鲜事弹窗删除方法
  5. TSPL指令二维码打印无效?我搜集的TSPL中文文档
  6. 服务器的安全基线、加固及应急响应总结
  7. 浙大版《C语言程序设计(第3版)》题目集 练习2-8 计算摄氏温度 (10 分)
  8. 全国计算机等级考试二级c语言考试什么时候改革成多套试卷,,2020年全国计算机等级考试二级C语言全真模拟试卷及答案(共四套).docx...
  9. Nancy的基本用法
  10. 新版Postman_9.15.2工具介绍