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
|
存储 搜索推荐 NoSQL
抖音是怎么做到不重复推荐内容呢?
抖音是怎么做到不重复推荐内容呢?
|
数据采集 搜索推荐 JavaScript
批量泛链接二级提交工具 无限制提交SEO新视野
或许有的站长还不知道这个东西有什么作用,在这儿我来给咱们简略的介绍一下。
|
JavaScript 开发者
get方式提交新闻防止新闻被覆盖掉(补充说明)|学习笔记
快速学习 get 方式提交新闻防止新闻被覆盖掉(补充说明)
get方式提交新闻防止新闻被覆盖掉(补充说明)|学习笔记
|
小程序 API 数据库
小程序中读取腾讯文档的表格数据
小程序中读取腾讯文档的表格数据
小程序中读取腾讯文档的表格数据
|
SQL 安全 前端开发
百度快照被改成博彩内容的解决办法
那如何确定网站是否被快照劫持?SINE安全老于给大家详细的介绍一下,首先可以打开百度站长工具,看下近期的收录是否异常,像收录突然猛增,百度的蜘蛛抓取次数是否多了很多,再一个看下site:www.***.com自己的网站,看最近一个月的收录,是否收录大量的世界杯体育,菠菜、QP等恶意内容的百度快照。再一个快照劫持的特征是,直接访问网站是不会出现跳转,从百度点击进入网站,会直接跳转到违规网站上去。我们sinesafe以实际的客户案例给大家看下,像下面这种收录内容,基本上就是网站快照被劫持了,也可以说是网站被黑客攻击了。
227 0
百度快照被改成博彩内容的解决办法
|
Java Maven 开发者
搜索 会员中心 收藏 动态 消息 创作
1、本地仓库 本地仓库就是开发者本地已经下载下来的或者自己打包所有jar包的依赖仓库,本地仓库路径配置在maven对应的conf/settings.xml配置文件。
 搜索  会员中心  收藏 动态 消息 创作
|
中间件 关系型数据库 MySQL
记一次保留订单历史记录的方案讨论
记一次保留订单历史记录的方案讨论
265 0