[Node.js] 笔记#1 Web 模块 | 收发 GET/POST

663 字
3 分钟
[Node.js] 笔记#1 Web 模块 | 收发 GET/POST
[Node.js] 笔记#1 Web 模块 | 收发 GET/POST

最近开始学 Node.js 了,写一写笔记,稍微记一下菜鸟教程上没有细讲的内容以及自己摸索的经验来巩固一下

这篇笔记包含 Web 模块的基本使用以及收发 GET/POST 请求的方法

Head Pic: 「無題」/「かるまゆ」[pixiv]


作服务端,接收请求#

GET#

var http = require("http");
var url = require("url");
var util = require("util");
// req请求 res返回
http
.createServer(function (req, res) {
//writeHeader(状态码,响应头属性)
res.writeHeader(200, { "Content-Type": "text/html;charset=UTF-8" });
//解析 url 参数
//parse() 将字符串转成对象,例如 req.url="/?url=123&name=321"
//true:params 将是一个含有属性的对象{url:"123",name:"321"}
//false:params 将是字符串"url=123&name=321"
var params = url.parse(req.url, true).query;
//使用 write() 向返回页面中输出内容
res.write(params.url);
res.write("<br>");
res.write(params.name);
//使用 end() 结束输出,必须要有 end()
//可以带上参数:end("xxxxxx"),表示输出此内容之后结束输出
res.end();
})
.listen(8080); //监听端口

POST#

接收 POST 请求与 GET 请求不一样的一点就是,接收 POST 必须通过请求(req)的data事件来获取 POST 数据,然后通过end事件的回调函数来处理余下的任务

var http = require("http");
var querystring = require("querystring");
http
.createServer(function (req, res) {
//暂存请求体信息
var body = "";
//每当接收到请求体数据,累加到post中
req.on("data", function (chunk) {
//一定要使用+=,如果body=chunk,因为请求favicon.ico,body会等于{}
body += chunk;
});
//数据接受完后,通过 querystring.parse 将 post 解析为真正的 POST 请求格式
req.on("end", function () {
//将一个字符串反序列化为一个对象
body = querystring.parse(body);
res.writeHead(200, { "Content-Type": "text/html;charset=utf8" });
if (body.name && body.url) {
// 输出提交的数据
res.write(body.name);
res.write("<br>");
res.write(body.url);
} else {
res.write("xxxxxxx");
}
res.end();
});
})
.listen(8080);

作为客户端,发送请求并获取返回#

GET#

//如果需要发送 HTTPS 请求,则需要 require('https')
var http = require("http");
//发送 GET 请求 get(URL,回调函数)
http.get("http://xxx.xx", function (res) {
//储存返回的 HTML 内容
var html = "";
//每收到一段数据就 += 一次
res.on("data", function (data) {
html += data;
});
//收到所有 HTML 内容后
res.on("end", function () {
//TODO
});
});

POST#

实际上上面的 GET 请求也可以用这里 POST 请求的方式来写,即使用http.request()而不是http.get(),但是直接用get()会简单很多

//如果需要发送 HTTPS 请求,则需要 require('https')
var http = require("http");
var querystring = require("querystring");
//POST 参数,直接写成一个对象
var contents = querystring.stringify({
name: "Jindai Kirin",
email: "jindaikirin@ykilin.moe",
address: "lolico.moe",
});
//请求选项
var options = {
host: "lolico.moe",
path: "/xxx/xxx",
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": contents.length,
},
};
var req = http.request(options, function (res) {
var html = "";
res.setEncoding("utf8");
res.on("data", function (data) {
html += data;
});
res.on("end", function () {
//TODO
});
});
//发送请求
req.write(contents);
req.end;

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

[Node.js] 笔记#1 Web 模块 | 收发 GET/POST
https://moe.best/posts/web-get-post/
作者
神代綺凛
发布于
2018-02-11
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
神代綺凛
专业咕咕
分类
标签
站点统计
文章
107
分类
15
标签
269
总字数
140,468
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录