响应:

  • 可以自定义设置状态码(状态码范围内的):res.statusCode =  404;
  • 修改响应头信息: res.setHeader('content-type','text/html');
  • 修改头信息,让页面跳转:res.setHeader('location','http://www.baidu.com');  (注意:状态码要改成302,因为302是重定向)
  • 也可以自己在响应头信息中添加一些参数:比如    res.setHeader('age','20');
  • 模拟cookie: res.setHeader('set-cookie','name=hh;expires=Thu,28-Aug-2017 18:24:55 GMT;Max-Age=360;path=/');
  • 响应体:(1)返回字符串: res.write('hello  word!');
                     (2)  返回标签:res.write('<h2>标题</h2>');
                   (3)返回大段的html:res.write(`<!DOCTYPE html><html>code <script></script> </html>`);   这里只要是html页面中写的代码都可以,包括什么js代码css代码没问题。但是有一点注意,写大段html代码的时候,就不能使用单引号 了,要使用数字1前面的那个字符,它允许换行。
                   (4) 返回json数据:var data = {name:'xixi',age=20};    var  str = JSON.stringify(data);    res.write(str);    注意:因为 json数据是对象,而res.write();要求第一个参数必须是字符串,所以需要用js中的方法  JSON.stringify()  把json数据转换成字符串。
  • res.end()在结尾必须加上。

    静态资源请求:

使用nodejs服务,不管请求什么资源,都是在  var server = http.createServer(function(req,res) {  } );   橙色的花括号里面处理的。所有请求都要在这个里面处理。比如说如果想要请求css文件,那么就需要在function里读取css文件内容,然后在通过响应体返回给客户端。

 //引入内置的http包
var http = require('http');
//引入fs包操作文件
var fs = require('fs');
//创建服务
var server = http.createServer(function(req,res){
//客户端请求的文件的路径
var path = req.url;
//拼接文件路径
var filePath = './statics/'+path; //因为习惯上把静态资源文件放在statics目录或者public目录下
//读取文件内容
fs.readFile(filePath,function(err,data){
if(err){
res.statusCode = ;
res.end('not found');
return; //让后面代码不在执行,避免包错
}
res.statusCode = ;
res.write(data);
res.end();
}) res.end('are you ok?'); //res.end()执行了的话,后面的代码就不能执行了,就像laravel中的dd();
//异步返回的结果也不能执行了,因为res.end是在异步回来之前执行的
res.write(''); //去掉res.end,执行这行代码,异步返回的结果还是能执行的。
}); //端口监听
console.log('ok');
server.listen();

点这里

表单处理:

//引入内置的http包
var http = require('http');
//引入fs包操作文件
var fs = require('fs');
//
var querystring = require('querystring');
//创建服务
var server = http.createServer(function(req,res){
//客户端请求的文件的路径
var url = req.url;
//获取请求方式
var method = req.method;
if(method.toLowerCase() == 'get' && url == '/form'){
//拼接文件路径
var filePath = 'statics/form.html';
//读取文件内容
fs.readFile(filePath,function(err,data){
if(err){
res.statusCode = 404;
res.end('not found');
return; //让后面代码不在执行,避免包错
} res.setHeader('content-type','text/html');
res.statusCode = 200;
res.write(data);
res.end();
});
} //服务端处理提交上来的表单数据,这里和Apache不同,需要自己来完成
if(method.toLowerCase() == 'post' && url == '/form'){
var data = '';
req.addListener('data',function(chunk){
//chunk 参数是将传递的数据分割传过来
data += chunk;
});
req.addListener('end',function(){
var d = querystring.parse(data); //是将字符串转换成对象,方便我们使用data数据中的某些参数
console.log(d); res.statusCode = 200;
res.setHeader('content-type','text/html');
res.write(data);
res.end();
});
} }); //端口监听
console.log('ok');
server.listen(8090);

客户端的代码略。注意一点:客户端代码的路径一定要和服务端设置的路径一致。或者说服务端判断路径的时候要和客户端的路径一致。

最新文章

  1. ubuntu 入门
  2. ADO.NET 使用通用数据库操作类Database (SQL Server)
  3. 消息摘要算法-MAC算法系列
  4. Java第一次实验
  5. jquery------脚注的使用
  6. Laravel教程 二:路由,视图,控制器工作流程
  7. [Android][Audio] audio_policy.conf文件分析
  8. CustomProgressBar
  9. php面向对象编程--学习笔记
  10. Tomcat7 Cluster 集群
  11. CSS border实现各个方向等腰直角三角
  12. 市场主流5款HTML5开发框架详解
  13. Scrum And Teamwork
  14. Redis详解(一)------ redis的简介与安装
  15. SDL中按键对应的值
  16. js常用正则表达式判断
  17. kettle删除移动文件
  18. try-catch-finally 与返回值的修改
  19. 小程序View内的文字不换行
  20. 线段树合并 || 树状数组 || 离散化 || BZOJ 4756: [Usaco2017 Jan]Promotion Counting || Luogu P3605 [USACO17JAN]Promotion Counting晋升者计数

热门文章

  1. PAT A1002 A+B for Polynomials(25)
  2. PAT B1006 换个格式输出整数 (15)
  3. Linux操作系统文档
  4. sqlalchemy定义mysql时间戳字段
  5. Qt 中使用Java代码获取安卓设备的MAC地址(安卓9.0)
  6. vue进阶:vs code添加vue代码片段
  7. 1 c#传递表变量去存储数据的例子
  8. 解决:Nginx访问静态页面出现中文乱码
  9. Hadoop 上Hive 的操作
  10. Odoo的 数据添加修改删除代码和对应的方式