HTTP 浅析

185 阅读2分钟

HTTP 浅析

node server.js 8888 命令 在电脑创建或占用了8888端口 server.js 占用其端口 如果有人请求8888 就会运行一次server.js里面的代码。

curl -v http://127.0.0.1:8888/xxx 这里请求看一次8888端口

在bash就会显示:

λ node server.js 8888
监听 8888 成功
请用在空中转体720度然后用电饭煲打开 http://localhost:8888
有个傻子发请求过来啦!路径(带查询参数)为:/
有个傻子发请求过来啦!路径(带查询参数)为:/favicon.ico
有个傻子发请求过来啦!路径(带查询参数)为:/xxx

逻辑 每次收到请求都会把中间的代码执行一遍 用if else判断路径,并返回响应 如果是已知路径,一律返回200 如果是未知路径,一律返回404 Content-Type表示内容的「类型/语法」

        response.setHeader('Content-Type', 'text/html;charset=utf-8');
        response.setHeader('Content-Type', 'text/css;charset=utf-8');
        response.setHeader('Content-Type', 'text/javascript;charset=utf-8');

response.write()可以填写返回的内容

        response.write(`你输入的路径不存在对应的内容\n`)
       /* 这是html*/
       response.write(`
        <!DOCTYPE html>
            <head>
                <link rel="stylesheet" href="/x">
                <script src="/y"></script>

            </head>
            <body>
                <h1>我是红色</h1>
                <p>我是粉红色</p>
            </body>
        `);
        /* 这是js*/
        response.write(`
        console.log("这是JS的部分")
        `);

response.end()表示响应可以发给用户了

HTTP 基础概念

请求

请求动词路径加查询参数协议名/版本 Host: 域名或IP Accept: text/html 我想接受什么内容 Content- Type:请求体的格式 回车 请求体(也就是上传内容)

curl -v -X POST --data '上传内容' http://127.0.0.1:8888/

细节

三部分:请求行、请求头、请求体

请求动词有GET / POST /PUT / PATCH/ DELETE等;GET获取 POST发送

请求体在GET请求中一般为空

文档位于RFC 2612第五章

大小写不敏感(随意),最好照着我的写

响应

协议名/版本状态码状态字符串

Content- Type:响应体的格式

回车

响应体(也就是下载内容)

用CURL构造请求(在cmder里面)

请求:

curl  -v  http://127.0.0.1:8888/xxx   这里请求看一次8888端口 

设置请求动词(动词为POST)

curl -v -X POST --data '上传内容' http://127.0.0.1:8888/

设置请求头(这里是:我要接受HTML内容)

curl -v -X POST -H 'Accept:text/html' http://127.0.0.1:8888/

设置请求体(-d/--data)

curl -v -X POST --data '上传内容' http://127.0.0.1:8888/

用Node.js 读取请求(在JS里面)

读取请求动词

    console.log(request.method);

读取路径

    console.log('路径(带查询参数)为:' + pathWithQuery)

读取请求头

    console.log(request.headers['Accept']);

设置响应状态码

    response.statusCode = 200

设置请求头

     response.setHeader('Content-Type', 'text/html');

设置响应体

        response.write(`哈哈哈\n`)

资料来源:饥人谷

本文为贰贰的原创文章,著作权归本人和饥人谷所有,转载务必注明来源