这次感觉最大的收获就是post参数的请求,之前一直觉得Post请求很神秘,好像只有绝顶高手才能写出这样的模块,比如自己以前用过的multer,formidable
一开始自己想直接使用这些模块完成解析,谁知道出了很多错误,死活用不了,tmd! 自己写!
post解析,按照编码方式可以分成两张,urlencoded和multipart类型,具体区别参考下面: application/x-www-form-urlencoded类型数据和multipart/form-data类型数据是两种常见的用于在HTTP请求中传输表单数据的编码格式。
总结来说,application/x-www-form-urlencoded适用于简单的表单数据,而multipart/form-data适用于同时传输文本数据和二进制文件数据的复杂表单数据,如文件上传。在处理这两种类型的数据时,服务器需要根据不同的Content-Type来解析数据。对于application/x-www-form-urlencoded类型的数据,可以手动解析,而对于multipart/form-data类型的数据,一般建议使用专门的库来处理,如busboy或multer。 以上为GPT3.5生成。
post解析感觉还是有点繁琐的,可以瞟一眼代码:
好啦,post就告一段落了。下面是正题。
先看看
就我个人理解,就是下面这样子: /path/{id}/{name} 框架应该支持解析功能,比如有一个请求: /index/1/jack,restfulapi就应该可以解析出{id}对应1,{name}对应jack,然后保存起来,让用户直接使用。那怎么实现呢?且看。
restfulGet在KillTime类里面,作为一个方法,功能就是解析出用户传进来的“/rest/{id}/{name}”这样的路由,变成/rest, 保存起来,然后解析出参数名称id和name
我也没想到其他好的方法,也懒得问gpt,不然什么都问gpt,啥也不会写了。这里主要是对请求路径(如/index/1)和用户传进来(比如/index/{id})的路径分别做解析,然后创建一个对象,设置id数学为1即可。done! 下面是如何让解析出来的参数传入到回调函数的具体细节:
parseAsObject从routePath和originalPath解析出参数,做成一个对象{}返回,然后cb就是回调函数了,将req,res,和params传入,直接在回调函数中使用,完美!
killtime暂时就告一段落了,诶,终于完成了自己心心念念的restful, 睡觉! 屏幕前的帅比你觉得还可以怎么写?有什么好的想法?欢迎骚扰!