Node.js_http服务(二)
一、http基本用法
-
加载内置的http模块
var http = require(“http”);
-
创建http服务对象
var server = http.createServer();
-
监听request请求事件
-
req(request)请求头
req.url:请求的地址
req.method:请求的方式,默认为get请求
req.headers:请求头对象
-
res(response)响应头
res.writeHead:statusCode+setHeader的结合版
res.setHeader() 设置响应头
res.statusCode :设置状态码
res.write:回复 多次
res.end:最后的回复 res.write+res.end 1次 只有调用了end以后客户端才能被响应
-
请求的content-type常见的类型有哪些?
application/json json数据类型
application/x-www-form-urlencoded 数据序列化
formData模拟表单提交,另一种数据格式,用于上传图片等。
-
响应的content-type常见的类型有哪些?
请求类型 说明 text/plain 文本类型 text/html html类型 text/css css类型 application/json json类型 application/x-javascript JavaScript类型 image/png/git/jpg 图片类型
server.on(“request”,function(req,res){ //res.statusCode = 404; //res.setHeader("content-type","text/plain;charset=utf8") //res.writeHead等价于上面两行 res.writeHead(200,{"content-type":"text/plain;chartset=utf8"}) //响应开始,在结束时才将消息一起发送 res.write("你好,"); res.write("再见!"); //响应结束 res.end("!!!"); })
-
-
启动服务
server.listen(9000,() => { console.log("server address:localhost:9000"); })
二、http的get方式
http.get中涉及两个参数,第一个参数是请求的地址,第二个参数是一个响应的回调函数。
注意:数据请求时,是通过流的方式接收的,类似于水龙头接水一样,并不是一次性瞬间接满一桶水。eg:
var path = "http://m.maoyan.com/ajax/movieOnInfoList?token=";//接口
http.get(path,(res)=>{
var str = "";
res.on("data",(data)=>{
str += data;
})
res.on("end",()=>{
console.log(JSON.parse(str));
})
})
三、http的post方式
这里介绍一种第三方的类库:request,对node中的http模块做了封装
npm init -y
cnpm install request -S
request(options,callback(err,res,body))
err:错误
res:整个响应体
body:响应的数据
options = {
method:"",
url:"",
headers:{},
body:{请求的参数}
}
const request = require("request");
const qs = require("querystring");
const options = {
url: "https://app2.motie.com/category/detail?free=0&finish=0&group=1&sortId=&page=1&pageSize=10",
method: "POST",
headers: {
"os": "wap"
},
body: qs.stringify({
free: 0,
finish: 0,
group: 1,
sortId: "",
page: 1,
pageSize: 10,
})
}
request(options, (err, res, body) => {
console.log(JSON.parse(body));
})