get 方式提交新闻防止新闻被覆盖掉|学习笔记

简介: 快速学习 get 方式提交新闻防止新闻被覆盖掉

开发者学堂课程【Node.js 入门与实战get方式提交新闻防止新闻被覆盖掉】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8281


get方式提交新闻防止新闻被覆盖掉

get方式提交新闻防止新闻被覆盖掉

1. 代码如下:

//封装一个render()函数

//将 render函数挂在到res对象上,可以通过res.render()来访问

//实现 get方式添加新闻

//-实现在原来list数组的基础上追加新闻,而不是覆盖

//1.加载 http模块

var http = require( 'http');

var fs = require( 'fs');

var path = require( " path');

var mime = require( " mime ' );

var url = require("url');

// 2.创建服务

http.createServer(function (req,res){

//要在这里写大量的代码

//为res对象添加一个 render()函数,方便后续使用

res.render = function (filename) {

fs.readFile(filename, function (err, data){

if (err){

res.writeHead(404,'Not Found', { 'Content-Type':'text/html;charset=utf-8'});

res.end ( ' 404,not found.");

return;

}

res.setHeader( ' Content-Type' , mime.getType(filename));

res.end(data);

});

};

//设计路由

//当用户请求/或/index时,显示新闻列表-get请求

//当用户请求/item时,显示新闻详情- get请求

//当用户请求/submit 时,显示添加新闻页面- get请求

//当用户请求/add时,将用户提交的新闻保存到data.json 文件中- get 请求

//当用户请求/add 时,将用户提交的新闻保存到 data. json 文件中- post 请求//将用户请求的 url 和 method 转换为小写字母

req.url = req. url. toLowerCase();

req. method = req . method . toLowerCase();

//通过 url 模块,调用 url.parse() 方法解析用户请求的 url (req.url )

var ur10bj = url.parse(req.url, true);

// console. log(ur10bj);

// url0bj.query.title

//先根据用户请求的路径(路由),将对应的HTML页面显示出来

if (req.url === '/' 1 req.url == ' /index' && req. method === ' get') {

//读取 index. html

res . render(path. join(__ dirname, 'views' ,' index.html'));

} else if (req.url === ' /submit' && req . method === 'get') {

//读取 submit.html 并返回

res . render( path.join(__ dirname, 'views', ' submit.html'));

} else if (req.url == ' /item' && req. method === ' get' ) {

//读取 details.html 并返回

res. render(path. join(__ dirname, 'views', ' details.html'));

} else if (req .url.startsWith( /add') && req . method === 'get') {

//1.1读取 data.json 文件中的数据,并将的u渠道的数据文件转换为一个数组

//此处,读取文件的时候可以直接写一个utf8 编码,这样的话,回调函数中的data 就是一个字符串了

fs.readFile(path. join(__ dirname, 'data', 'data.json'), 'utf8', function (err, data) {

//因为第一次访问网站, data.json 文件本身就不存在,所以肯定是有错误的

//但是这种错误,我们并不认为是网站出错了,所以不需要抛出异常

if (err && err.code !== ' ENOENT') {

throw err;

}

//如果读取到数据了,那么就把读取到的数据data, 转换为list数组

//如果没有读取到数据,那么就把'[]' 转换为数组

var list = JSON.parse(data 11 '[]');

});

list. push(url0bi. query);

// 2.把用户提交的新闻数据保存到data. json 文件中

//把list数组中的数据写入到data.json 文件中

fs .writeFile(path. join(__ dirname, 'data', 'data . json'), JSON. stringify(list),function (err) {

if (err) {

throw err;

}

console.log('ok' );

// 设置响应报文头,通过响应报文头告诉浏览器,执行一次页面跳转操作

//3.跳转到新闻列表页

//重定向

res . statusCode = 302 ;

res.statusCode = ‘Found’;

res.setHeader(‘Location’,’/’);

res.end();

});

});

}else if (req.url === ' /add' 8& req . method === 'post') {

//表示post方法提交一条新闻

}else if (req. url. startswi th(' /resources') && req . method === 'get') {

//如果用户请求是以/resources 开头,并且是get 请求,就认为用户是要请求静态资源

//resources/images/s.gif

res. render(path. join(__ dirname, req .ur1));

} else {

res.writeHead(404,’Not Found’,{‘Content-Type’:’text/html;charset=utf-8’});

res.end(‘404,Page Not Found.’);

}

}).listen(9090,function(){

Console.log(‘http://localhost:9090’);

});

2.代码解说:

当用户通过get方法提交过来一条数据的时候,我们首先第一步要读取原有文件中的数据,然后转成list数组。

3.执行代码如下:

C: Users\Humble\Desktop\12期\e3-HackerNers\02-理代码\课堂代码\01-hackernews(05-hackernews91.0.0)

入node index4.js

http://localhost :9090

浏览器中访问结果:

image.png

点击submit提交跳转出现重定向提交到首页的结果查看页面(也可搜索json格式化查看):

image.png

相关文章
文本,学习方法,必须做,快的学习方法,统计汇总写法,比如你要构思一个数学库,需要写一个汇总,主动获取标题统计,主动生成文章跳转链接,然后将它打入文章资料当中:
文本,学习方法,必须做,快的学习方法,统计汇总写法,比如你要构思一个数学库,需要写一个汇总,主动获取标题统计,主动生成文章跳转链接,然后将它打入文章资料当中:
|
7月前
|
数据采集 人工智能 自然语言处理
ChatGPT系统课程 - 提示词的重点使用场景之内容总结和内容提取
ChatGPT系统课程 - 提示词的重点使用场景之内容总结和内容提取
DedeCMS织梦文档关键词维护中设置自动关键词重复嵌套出错的修改方法
织梦 DedeCMS 后台的关键词维护默认的情况是字数少的词优先于字数多的词,比如我们有两个这样的词:锚文本、定向锚文本,第二个词包含了第一个词,在文章中如果出现“定向锚文本”这个词,默认情况下只会给锚文本两个字添加关键词超链接,而不是整个词,那么我们怎么样才能实现字数多的词优先于字数少的词呢?
|
7月前
|
JavaScript
js事件记录(如有更新请留言我去补充)
js事件记录(如有更新请留言我去补充)
织梦dedecms会员发布文章内容自动过滤外部链接的方法
织梦会员中心发布文章自动过滤外部外部链接,保留本站站内链接。这个织梦默认后台本身带有这样的功能的,只是会员模块里没有而已。
|
存储 搜索推荐 NoSQL
抖音是怎么做到不重复推荐内容呢?
抖音是怎么做到不重复推荐内容呢?
|
JavaScript 开发者
get方式提交新闻防止新闻被覆盖掉(补充说明)|学习笔记
快速学习 get 方式提交新闻防止新闻被覆盖掉(补充说明)
get方式提交新闻防止新闻被覆盖掉(补充说明)|学习笔记
|
缓存 Java 数据库
SpringDataRedis(二)(案例)(网站首页-缓存广告数据)
SpringDataRedis(二)(案例)(网站首页-缓存广告数据)
91 0
html+css实战109-新闻列表-内容
html+css实战109-新闻列表-内容
112 0
html+css实战109-新闻列表-内容
|
前端开发
前端工作总结107-修改记录取消文本提示ele提示
前端工作总结107-修改记录取消文本提示ele提示
134 0