[Node.js] 笔记#1 Web 模块 | 收发 GET/POST
663 字
3 分钟
[Node.js] 笔记#1 Web 模块 | 收发 GET/POST
![[Node.js] 笔记#1 Web 模块 | 收发 GET/POST](/usr/uploads/2018/02/471101801.jpg)
最近开始学 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/相关文章智能推荐
1
让 Vue 使用指定配置文件进行构建
杂七杂八的坑
2
[UoocOnline] 优课在线辅助
个人项目通过模拟正常视频观看进度刷课,Nodejs 编写
3
[Pxder] Pixiv 插画下载器
个人项目可按根据指定画师 UID 解析并下载插画(包括动图)、一键下载所有你关注的画师的插画或收藏的插画、智能增量更新下载过的画师的插画。 多线程下载,并且支持使用 HTTP 与 SOCKS 代理。
4
[开源] 二次元搜图QQ机器人
个人项目基于 saucenao / ascii2d / whatanime 的搜图机器人
5
小众软件#3 [hfs] 简易http文件服务器 局域网内轻松互传文件
小众软件好久没写点实用性推荐文章了,因为最近不管是碧蓝还是废狗都是肝度满满…… 这次介绍一个有用的单文件程序——hfs,一个简易的 HTTP 文件服务器,可以让你在局域网环境内方便的分享文件或者接收文件。当然,如果你有公网IP甚至也可以直接分享到外网环境。
随机文章随机推荐


