zoukankan      html  css  js  c++  java
  • nodejs (下)(设置响应参数)

         响应:

    • 可以自定义设置状态码(状态码范围内的):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文件内容,然后在通过响应体返回给客户端。

      

     1 //引入内置的http包
     2 var http = require('http');
     3 //引入fs包操作文件
     4 var fs = require('fs');
     5 //创建服务
     6 var server = http.createServer(function(req,res){
     7     //客户端请求的文件的路径
     8     var path = req.url;
     9     //拼接文件路径
    10     var filePath = './statics/'+path; //因为习惯上把静态资源文件放在statics目录或者public目录下
    11     //读取文件内容
    12     fs.readFile(filePath,function(err,data){
    13         if(err){
    14             res.statusCode = 404;
    15             res.end('not found');
    16             return;  //让后面代码不在执行,避免包错 
    17         }
    18         res.statusCode = 200;
    19         res.write(data);
    20         res.end();
    21     })
    22 
    23     res.end('are you ok?');  //res.end()执行了的话,后面的代码就不能执行了,就像laravel中的dd();
    24                              //异步返回的结果也不能执行了,因为res.end是在异步回来之前执行的
    25     res.write('111');        //去掉res.end,执行这行代码,异步返回的结果还是能执行的。
    26 });
    27 
    28 //端口监听
    29 console.log('ok');
    30 server.listen(8090);
    点这里

         表单处理:

    //引入内置的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);
    View Code

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

  • 相关阅读:
    (五)Spring Cloud教程——Config(F版本)
    (四)Spring Cloud教程——Zuul(F版本)
    (三)Spring Cloud教程——Hystrix(F版本)
    (二)Spring Cloud教程——Ribbon 和 Feign(F版本)
    (一)Spring Cloud教程——Eureka(F版本)
    3年的坚持,最终造就著作——《Learninghard C#学习笔记》
    WPF快速入门系列(9)——WPF任务管理工具实现
    WPF快速入门系列(8)——MVVM快速入门
    [WPF实用技巧]如何使WPF的TreeView节点之间有连线
    WPF快速入门系列(7)——深入解析WPF模板
  • 原文地址:https://www.cnblogs.com/bneglect/p/10439478.html
Copyright © 2011-2022 走看看