HTTP -请求和响应 & Node.js Server

主要内容
用代码实现http(演示Node.js服务)
前置条件:安装Node.js 14

在这里插入图片描述

后端开发的代码在服务端运行,前端开发的代码在客户端运行。

请求指客户端里的浏览器发一个东西,发到服务器。

响应指服务器拿到请求后,在同一个端口返回一个响应。

如何发请求?

1.用chrome地址栏

发请求: 浏览器输入http://baidu.com

查看响应: 打开开发者工具->选择network->刷新->选中第一个请求,选择Response

2.用curl命令发请求

(后面会单独讲解)

 curl -v https://www.baidu.com

概念

帮你发请求的工具叫做 「用户代理」

用chrome发送请求那chrome就是代理代理,用curl,curl就是用户代理。

实现http-server

实现http-server,根据路径返回字符串
Node.js有一个http模块可以做到

源代码

关键代码如下图所示:

在这里插入图片描述

注意事项

这些代码就是服务器代码,一般放在服务器上

request是请求对象,response是响应对象

path是不带查询参数的路径/x

query是查询参数的对象形式{a:'1'}

quertString是查询参数的字符串形式?a=1

pathWithQuery是带查询参数的路径,一般不用

代码逻辑

1.每次请求,都会执行console.log

2.用if else判断路径,并返回响应

如果是已知路径,一律返回200

如果是未知路径,一律返回404

3.response.write()填写响应的内容

response.end()将响应发给客户端用户,只要你end就会发送给浏览器

4.乱码处理response.setHeader('Content-Type', 'text/html;charset=utf-8')

5.每次修改记得重启

control+c中断

6.后缀是垃圾

不需要加后缀(/x.css)

Content-Type才是决定文件类型的关键

体系化学习

系统学习概念(HTTP)

1.必须学会什么?

基础概念(有哪些是避必会的)

如何调试(用的是Node.js,可以用log/debugger)

在哪查资料(用的是Node.js,看Node.js文档)

标准制定者是谁(HTTP规范文档:RFC 2616等)

2.如何学 -CRM

copy 抄

run 放在自己的机器上运行成功

modify 改变,加入自己的想法,然后重新运行

HTTP

基础概念

一.请求

1.请求(所有请求都要按照如下格式)

(1)请求动词 路径加查询参数 协议名/版本

在这里插入图片描述

必须按照HTTP规范来做,否则服务器就理解不了你想干什么

(2)Host:域名或IP

(3)Accept:text/html

在这里插入图片描述

Accept内容,表示我想接收什么

HTTP告诉服务器想接收的内容:首选html,没有html有xml也行,没有xml有avif也行...

(4)Content-Type:请求体的格式

我在请求的时候可以上传一些内容post。上传的内容放到请求体里。

(5)回车

(6)请求体(也就是上传内容)

2.细节

(1)三部分:请求行,请求头,请求体

请求行指“请求动词 路径加查询参数 协议名/版本”

请求头指 “Host Accept Content-Type” 三部分

(2)请求动词包括:GET用来获取内容 / POST上传内容 /PUT/PATCH/DELETE等

(3)请求体在GET请求中一般为空

(4)文档位于RFC 2616第五章

(5)大小写不敏感,但js大小写敏感

二.响应

1.响应


在这里插入图片描述

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

(2)Content-Type:响应体的格式

标注了响应体Response的格式

(3)回车

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

在这里插入图片描述

2.细节

(1)三部分:状态行,响应头,响应体
状态行指“状态行,响应头,响应体”

(2)面试题:常见状态码

(3)文档位于RFC 2616 第六章

用curl命令构造请求

curl 就是个浏览器。
curl 可以完成chrome的基本所有功能,只不过它不能可视化,因为它没有可视化的界面。

1.看过程curl -v

node server.js 8888  server要先开启
curl -v http://localhost:8888/

2.设置请求动词-X POST

修改请求为POST,注意大小写

curl -v -X POST http://localhost:8888/

3.设置路径和查询参数

直接在url后面加

curl -v -X POST http://localhost:8888/xxx?wd=hi

补充:

设置锚点

 curl -v -X POST http://localhost:8888/xxx?wd=hi#5

因为锚点是不会发送到服务器的,所以根本不会展示出来

在这里插入图片描述

4.设置请求头

-H 'Name:Value'或 --header 'Name:Value'

curl -v -X POST -H 'Accept:text/html' http://localhost:8888/xxx?wd=hi

意思是,我要接收的内容的文档类型是html


在这里插入图片描述

5.设置请求体

-d'内容'或--data'内容'

我要上传的“内容”是plain纯文本
在这里插入图片描述

6.curl也可以用来下载图片。

cd ~/Desktop/
curl 图片地址 > 图片 命名

用Node.js读取请求

构造请求后怎么用Node.js读取请求?

1.读取请求动词

  request.method

2.读取路径

request.url路径,带查询参数

path纯路径,不带查询参数

query只有查询参数

3.读取请求头

request.headers['Accept']

用Node.js设置响应

1.设置响应状态码

response.statusCode=201

2.设置响应头

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

3.设置响应体

response.write(`内容`)

可追加内容

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容