网站的组成
网站应用程序主要分为两大部分:客户端和服务器端。
客户端:在浏览器中运行的部分,就是用户看到并与之交互的界面程序。使用HTML、CSS、JavaScript构建。
服务器端:在服务器中运行的部分,负责存储数据和处理应用逻辑。
网站服务器
网站服务器:能够提供网站访问服务的机器就是网站服务器,它能够接收客户端的请求,能够对请求做出响应。
Node网站服务器的组成:
1,电脑
2,Node环境
3,请求响应对象
服务器端的几个名词
IP地址
互联网中设备的唯一标识。
IP是Internet Protocol Address的简写,代表互联网协议地址
本地IP :127.0.0.1
域名
由于IP地址难于记忆,所以产生了域名的概念,所谓域名就是平时上网所使用的网址。
http://www.itheima.com => http://124.165.219.100/
虽然在地址栏中输入的是网址, 但是最终还是会将域名转换为ip才能访问到指定的网站服务器。
本机域名:localhost
端口
端口是计算机与外界通讯交流的出口,用来区分服务器电脑中提供的不同的服务。
URL
统一资源定位符,又叫URL(Uniform Resource Locator),是专为标识Internet网上资源位置而设的一种编址方式,我们平时所说的网页地址指的即是URL。
URL的组成
传输协议://服务器IP或域名:端口/资源所在位置标识
http://www.itcast.cn/news/20181018/09152238514.html
http:超文本传输协议,提供了一种发布和接收HTML页面的方法。
在本地创建web服务器
1 // 创建网站服务器的模块 2 // 引用系统的http模块 3 const http = require("http"); 4 5 // 创建web服务器 6 const app = http.createServer(); 7 8 // 当服务器有请求的时候 9 // 这是是为服务器添加事件,request代表添加的是请求事件,后面为事件处理函数 10 app.on("request", (req, res) => { 11 // res 为响应对象 12 // req 为请求对象 13 14 // 对客户端的请求响应 15 res.end('<h1>hello user</h1>'); 16 }); 17 18 // 监听端口,向外界提供服务 19 app.listen(3000); 20 21 console.log("网站服务器启动成功");
HTTP协议
HTPP协议:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)规定了如何从网站服务器传输超文本到本地浏览器,它基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。
报文
在HTTP请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。
请求报文
在为服务器添加请求事件的时候,第二个参数为事件处理对象,该对象有两个默认参数,第一个默认参数就为 req请求对象
该对象有三个属性
req.headers // 获取请求报文
获取请求报文的方式
1 // 获取请求报文信息 2 // req.headers 3 console.log(req.headers); 4 // 获取请求报文中的某一项 [key] 5 console.log(req.headers["accept"]);
req.url // 获取请求地址
获取的就是URL中的资源所在位置字段
传输协议://服务器IP或域名:端口/资源所在位置标识
如果没有资源所在位置字段默认获取 /
获取到不同字段进行不同的操作
1 // 获取请求地址:就是一个标识,为用户提供不同的响应 2 // req.url 3 console.log(req.url); 4 if(req.url == "/index" || req.url == "/"){ 5 res.end("<h2>欢迎来到首页</h2>"); 6 }else if(req.url == "/list"){ 7 res.end("welcome to listpage"); 8 }else { 9 res.end("note fond"); 10 }
req.method // 获取请求方法
请求方式分为两种:
GET请求 请求数据 该请求为:地址栏输入网址的方式
POST请求 发送数据 该请求为:表单的方式发送post请求
1 <!-- 2 method:指定当前表单的提交方式 3 action:指定当前表单的提交地址 4 --> 5 <form method="post" action="http://localhost:3000"> 6 <input type="submit"> 7 </form>
不同请求做不同的操作
1 // 获取请求方式 2 // req.method 3 console.log(req.method); 4 if (req.method == "POST") { 5 res.end("post") 6 } else if (req.method == "GET") { 7 res.end("get") 8 }
响应报文
设置响应报文
1 // 响应报文 2 // res.writeHead() 3 // 参数1:状态码,不写默认200 4 // 参数2:对象:写的是响应报文信息。对接收的报文做什么处理 5 res.writeHead(200,{ 6 // 设置解析代码为HTML,编码格式为utf8 7 "content-type":"text/html;charset=utf8" 8 });
状态码
200 请求成功
404 请求的资源没有被找到
500 服务器端错误
400 客户端请求有语法错误
响应报文的内容类型
text/html
text/css
application/javascript
image/jpeg
application/json
-------