服务器端基础概念(?????)

网站的组成

在这里插入图片描述

IP

在这里插入图片描述

域名

在这里插入图片描述

端口

端口是计算机与外界通讯交流的出口,就是一堆数字,用来区分服务器电脑中提供的不同的服务。

URL

统一资源定位符,又叫URL,是专门为标识Internet网上资源位置而设的一种编址方式。
平时说的网页地址就是URL

URL的组成

传输协议://服务器IP或域名:端口/资源所在位置标识
http://www.itcast.cn/new/wwww.html
http:超文本传输协议,提供了一种发布和接收HTML页面的方法。

开发过程中客户端和服务器端说明

在开发阶段中,客户端和服务器端使用同一台电脑,即开发人员电脑。

创建web服务器

在这里插入图片描述

//用于创建网站服务器的模块
const http = require('http');
//app对象就是网站服务器对象
const app = http.createServer();
//当客户端有请求来的时候
app.on('request', (req, res) => {
	res.end('<h2>Hello user</h2>');
});
//需要监听一个端口
app.listen(3000);
console.log('网站服务器启动成功');

//本机调用方法
//http://localhost:3000/

nodemon

nodemon是一种工具,通过在检测到目录中的文件更改时自动重新启动节点应用于node.js的应用程序。
nodemon用于替换命令行中的node执行。
安装方法:
npm install -g nodemon

HTTP协议

HTTP协议的概念

客户端与服务器端沟通的规范。
超文本传输协议:规定了如何从网站服务器传输超文本到本地浏览器,它基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。

报文(客户端与服务器端两者对话的说明以及对话的内容)

在http请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。

在这里插入图片描述
比如用户登录时,输入的用户名和密码。

下面就是一个报文信息:
在这里插入图片描述

请求报文
  1. 请求方式
    GET 请求数据
    POST 发送数据(登录时,用这个,更安全)
    在这里插入图片描述
    在这里插入图片描述

  2. 请求地址(Request URL)
    在这里插入图片描述

响应报文
  1. HTTP状态码
    在这里插入图片描述
  2. 内容类型
    在这里插入图片描述

HTTP请求与响应处理

  1. 请求参数
    客户端向服务器端发送请求时,有时需要携带一些客户信息,客户信息需要通过参数的形式传递到服务器端,比如登陆操作。
  2. GET 参数
    10132901 - 10132904
//用于创建网站服务器的模块
const http = require('http');
//用于处理url地址
const url = require('url');
//app对象就是网站服务器对象
const app = http.createServer();
//当客户端有请求来的时候
app.on('request', (req, res) => {
	//获取请求方式
	//req.method
	//获取请求地址
	//req.ul
	//req.header 获取请求报文信息
	res.writeHead(200, {
		'content-type':'text/html;charset=utf8',
		'hello':'world'
	});
	console.log(req.url);
	//1.要解析的url地址
	//2.将查询参数解析成对象形式
	let {query, pathname} = url.parse(req.url, true);
	console.log(query.name);
	console.log(query.age);
	// console.log(req.method);
	console.log(req.headers['accept']);
	if (pathname == '/index' || pathname == '/') {
		res.end('<h2>welcome to homepage</h2>');
	} else if (pathname == '/list') {
		res.end('welcome to listpage');
	} else {
		res.end('not found');
	}
	if (req.method == 'POST') {
		res.end('post');
	} else if (req.method == 'GET') {
		res.end('get');
	}
	// res.end('<h2>Hello user</h2>');
});
//需要监听一个端口
app.listen(3000);
console.log('网站服务器启动成功');

//本机调用方法
//http://localhost:3000/

2. post请求参数
参数被放置在请求体中进行传输
get参数被放置在地址栏中进行传输
在这里插入图片描述

//用于创建网站服务器的模块
const http = require('http');
//app对象就是网站服务器对象
const app = http.createServer();
//处理请求参数模块
//把字符串转换成对象格式
const querystring = require('querystring');
//当客户端有请求来的时候
app.on('request', (req, res) => {
	//post参数是通过事件的方式接收的
	//data 当请求参数传递的时候触发data事件
	//end	当参数传递完成的时候触发end事件
	
	let postParams = '';

	req.on('data', params=> {
		postParams += params;
	});
	req.on('end', ()=> {
		
		console.log(querystring.parse(postParams));
	});
	res.end('ok');
});
//需要监听一个端口
app.listen(3000);
console.log('网站服务器启动成功');

//本机调用方法
//http://localhost:3000/
响应

路由是指客户端请求地址与服务器端程序代码的对应关系。简单的说,就是请求什么响应什么。
在这里插入图片描述
在这里插入图片描述

//1.引入系统模块http
//创建网站服务器
//为网站服务器对象添加请求事件
//实现路由功能
//		获取客户端的请求方式
//		获取客户端的请求地址
const http = require('http');
const url = require('url');

const app = http.createServer();

app.on('requset', (req, res) => {
	//获取请求方式,转换成小写
	const method = req.method.toLowerCase();
	//获取请求地址
	//url.parse 将一个URL字符串里面的各项参数转换成对象并返回
	const pathname = url.parse(req.url).pathname;

	res.writeHead(200, {
		'content-type' : 'text/html;charset=utf8'
	});

	if (method == 'get') {
		if (pathname == '' || pathname=='/index') {
			res.end('欢迎来到首页')
		} else if (pathname == '/list') {
			res.end('欢迎来到列表页')
		} else {
			res.end('您访问的页面不存在')
		}
	} else if (method == 'post') {

	}
});

app.listen(3000);
console.log('服务器启动成功');
静态资源

客户端向服务器端请求响应的资源,服务器端不需要处理,可以直接响应给客户端的资源就是静态资源。例如CSS.JavaScript,image,HTML文件

动态资源

相同的请求地址不同的响应资源,这种资源就是动态资源
获取当期页面的绝对路径
__dirname

要拼接路径,用系统模块的join()方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值