在与后端程序员调试接口时,往往会发生一些诡异的问题。比如,我本地用json-server模拟数据没什么问题,可为什么一换上真实的接口往往不是那么顺利,有时通过谷歌能解决一部分问题,大多数情况下,总是去麻烦后端程序员,这个为啥是这样,这个为啥是那样,一次二次这样可以,次数多了,人家也会烦,况且,不让我亲眼看一下一条post请求发送到后台到底发生了什么,心里难免有些痒痒。
最近研究vue+webpack,顺带研究nodejs,正好可以利用nodejs搭一个简单的http-server,用postman发送请求,node-inspector调试nodejs来拦截postman发来的请求,这样就可以达到我的目的了。
理想是美好的,现实总是残酷的,在使用node-inspector的过程中出现了一个bug,据说node4.X版本以上都存在这个问题,没办法,只能安装两个node版本了,看我博客如何在windows上管理多个node
首先我的目录结构是这样的
index.js
var PORT = 8000; |
安装node-inspector
npm i node-inspector -g |
执行node-inspector
node-inspector |
执行index.js
supervisor --debug index.js |
打开 http://127.0.0.1:8080/?port=5858 ,然后下断点拦截http请求。
然后就可以愉快的用postman给本地服务器发请求了。
服务器搭完了,该说正事了,初学前端时,知乎上一篇文章说,前端应该熟悉http协议,今天才深刻体会到这句话的重要。
前后端对接时,两个人都懂http那是最好不过了,最起码也要一方懂,如果两方都不懂,那就尴尬了。
先说postman
发送post、put或者delete请求时会有这四个选项,其实是三种数据格式外加一种自定义的。
x-www-form-urlencoded (Content-Type=application/x-www-form-urlencoded)是 html 表单提交时默认的数据格式,使用这种格式提交数据时,后台(nodejs,后同)会收到诸如 a=1&b=2 这样的字符串。
form-data 是html5新加的提交数据格式,用法这里暂且不论。
binary主要用于二进制文件的传输。
raw是自定义数据格式
test 表示我给服务器发的是个纯文本
JSON 表示我给服务器发的是JSON字符串
javascript 表示我给服务器发的是js代码
xml 表示我给服务器发的是xml代码
html 表示我给服务器发的是html
那服务器是怎么知道这些的,每条http请求都有个content-type属性,选择上面不同的数据格式,postman都会生成不同的content-type,服务器根据httpRequest的content-type判断client提交了那种类型的数据,调用不同的方法解析数据。
伪代码:
var http = require('http'); |