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

相关文章
DedeCMS织梦文档关键词维护中设置自动关键词重复嵌套出错的修改方法
织梦 DedeCMS 后台的关键词维护默认的情况是字数少的词优先于字数多的词,比如我们有两个这样的词:锚文本、定向锚文本,第二个词包含了第一个词,在文章中如果出现“定向锚文本”这个词,默认情况下只会给锚文本两个字添加关键词超链接,而不是整个词,那么我们怎么样才能实现字数多的词优先于字数少的词呢?
织梦dedecms会员发布文章内容自动过滤外部链接的方法
织梦会员中心发布文章自动过滤外部外部链接,保留本站站内链接。这个织梦默认后台本身带有这样的功能的,只是会员模块里没有而已。
|
移动开发
微信h5扫码接口范例:多个扫码框支持的办法,通过引入一个参数来区分及使用localStorage保证之前扫到的数据不丢失
微信h5扫码接口范例:多个扫码框支持的办法,通过引入一个参数来区分及使用localStorage保证之前扫到的数据不丢失
114 0
|
数据采集 搜索推荐 JavaScript
批量泛链接二级提交工具 无限制提交SEO新视野
或许有的站长还不知道这个东西有什么作用,在这儿我来给咱们简略的介绍一下。
|
JavaScript 开发者
get方式提交新闻防止新闻被覆盖掉(补充说明)|学习笔记
快速学习 get 方式提交新闻防止新闻被覆盖掉(补充说明)
get方式提交新闻防止新闻被覆盖掉(补充说明)|学习笔记
|
JSON JavaScript 数据格式
post 方式提交一条新闻|学习笔记
快速学习 post 方式提交一条新闻
post 方式提交一条新闻|学习笔记
html+css实战109-新闻列表-内容
html+css实战109-新闻列表-内容
104 0
html+css实战109-新闻列表-内容
|
中间件 关系型数据库 MySQL
记一次保留订单历史记录的方案讨论
记一次保留订单历史记录的方案讨论
262 0
|
搜索推荐
百度下拉框与相关搜索出现的负面信息,要怎么删除?
用户在互联网上口碑宣传,沉淀了大量的不正面信息,百度快照收录后,一旦给予较好的搜索排名,自然下拉框和相关搜索推荐关键词也会自动出现,不及时处理,随着其他网站抓取和采集内容,负面效应会越来越大。 我们用百度在搜索企业或者品牌名称的时候,百度下拉框会跳出一些“提示词”,同时网页底部的“相关搜索”也会出现相关关键词,对企业来说这种信息展示是非常优越的,是一种品牌的象征,具有很好的商业价值。
258 0
|
SEO 监控 搜索推荐
修改或删除旧文章会影响SEO排名吗?
如何最大化旧SEO博客帖子的自然价值 如果您曾经参与过SEO活动或管理过网站,那么您已经听过“内容为王”的短语。 虽然陈述是陈词滥调,但这并没有错。 在百度的鼓励下,搜索引擎优化一直在敦促他们的营销伙伴定期创建尽可能多的高质量,有针对性的内容。
1245 0