开发者学堂课程【Node.js 入门与实战: HackerNews05-通过使用url模块的parse方法获取用户get提交的数据】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/588/detail/8278
HackerNews05-通过使用url模块的parse方法获取用户get提交的数据
目录:
一、 实现get方式添加新闻
二、Parse方法
一、实现get方式添加新闻
首先先做一个添加技能,把一个表单中的数据提交给服务器可以通过get方式,也可以通过post方式。
实现通过用get方式来提交。用get方式提交要先确保表单的格式是get形式。找到表单位置,查看它是get还是post。
在表格中输入新闻的内容,标题等点击submit。
就相当于要get请求整个的/add这个路径。
// 先根据用户请求的路径(路由),将对应的HTML页面显示出来
if (req.url ===’/’ || req.url === ‘/index ‘&& req.method === ‘get’) {
// 读取 index.html
render(path. join(--dirname, ‘views’,’ index.html’), res);
else if (req.url === ‘/submit’&&req.method === ‘get’) {
// 读取submit.html 并返回
render(path. join(--dirname, ‘views’,’ submit.html’), res);
else if (req.url === ‘/item’ && req.method === ‘get’) {
// 读取details.html 并返回
render(path. join(--dirname, ‘views’,’ details..html’), res);
else if (req.url === ‘/add’ && req.method === ‘get’) {
// 表示 get 方法提交一条新闻
// 要获取用户get提交的数据,需要用到url模板(这个模块是node.js 内置模块,不是第三方模块)
// 既然是get提交数据,所以通过req.url就可以获取这些数据,但是这样使用起来不方便(得自己去截取字符串,然后获取想要的数据)
// 通过url模块,可以将用户get提交的数据解析成一个json对象,使用起来很方便
// console.log(req.url);
res.end(‘over’);
// 1.获取用户get提交过来的一条新闻
// 2.把用户提交的新闻数据保存到data.json文件中
// 3.跳转到新闻列表页
else if (req.url === ‘/add’ && req.method === ‘get’) {
// 表示post方法提交一条新闻
else if (req.url.startsWith(‘/resources’) && req.method === ‘get’) {
//如果用户请求是以/resources 开头,并且是get请求,就认为用户是要请求静态资源
// /resources/images/s.gif
进入cmd下验证
通过url解析完毕之后,用户想获取这个请求路径中的一部分只要点对上了即可
二、Parse方法
url.parse(urlString[,parseQueryString[,slashesDenoteHost]])
它有三个参数,第一个参数是必须要填的,另外两个根据情况而定。
先加载这个模块板var url = require(‘url’);
// 通过url模块,调用url.parse()方法解析用户请求的url(req.url)
Var urlObj – url.parse(req.url,ture);
// console.log(urlObj);
urlObj.query.title
解析完毕后整体上显示一个对象,但是解析完毕后全部都显示为null,因为req.url这个字符串里面本身就只包含了后面一部分,所以前面都没有。
Url查询完成后这个search里面包含了?
后的所有字符串,query里面是包含了除了问好后面的所有内容,pashname只包含了/add这个路径。
// 1.获取用户get提交过来的一条新闻
// urlObj.query.title
// urlObj.query.url
// urlObj.query.text
// 2.把用户提交的新闻数据保存到data.json文件中
// 3.跳转到新闻列表页
else if (req.url === ‘/add’ && req.method === ‘get’) {
// 表示post方法提交一条新闻
else if (req.url.startsWith(‘/resources’) && req.method === ‘get’) {
//如果用户请求是以/resources 开头,并且是get请求,就认为用户是要请求静态资源
// /resources/images/s.gif