nodejs服务器概念及简单使用(路由端口......)

服务器和客户端

一.服务器是**提供网络服务的机器,**通过安装特殊的软件(或者者是运行某些特殊的代码)来提供服务.
服务器=电脑+能给其他电脑/设备提供服务的机器
有几种服务器

  1. web服务器能让你上网 (图片文字等等)
  2. ftp服务器 安装serv-U软件,为其他电脑提供文件下载,共享服务.
  3. 数据库服务器 安装mysql软件,为其它电脑提供数据库服务(订单数据…)

主要学习的是web服务器:
用户通过阅览器来享受web服务器提供的服务
Url地址来访问某个web服务器上的资源
阅览器端发起请求,web服务器端收到请求后,响应这个请求,并将处理结果返回给阅览器.==>(通过http(或者是https)协议来进行请求和响应的)

二.IP地址

打开cmd,通过ipconfig命令来获取自己的IP地址

三.域名

理论:
服务器和客户端 通过DNS来解析域名来获取IP地址

四.端口

1.服务器要提供服务必须要通过指定的端口
2.服务器与端口都是需要通过端口来进行通信
3.端口是可以编程分配
4.有一些端口号都是被预定了的.

总结:
阅览器搜索网站(DNS解析:把域名解析成IP) 按IP地址请求资源, **服务器:**检查端口 ->找到服务器程序 ->处理请求并返回 响应 ->演示页面(在阅览器里面)

怎么写一个简单的服务器了? 怎么访问了?(需要什么条件)

一:用http写一个web服务器

二.用到nodejs核心模块http , 使用createServer来创建服务, 使用listen方法来启动服务
操作: 1.手写一个服务器 :实现服务器功能 01http.js 2.运行代码,启动服务 在cmd窗口运行 ( node 01http.js) 3.访问服务,测试功能
localhost(本机IP地址访问)
01创建

扫描二维码关注公众号,回复: 14245543 查看本文章

![02启动服务器](https://img-blog.csdnimg.cn/f6de0895b28843c7b7982f410e337267.pn

关闭服务器:ctrl+c

nodemon不用重启服务器在这里插入图片描述

localhost

阅览器搜索
//自己的IP加端口(只能自己访问的)
例如:localhost:3000
IP加端口号 (在一个局域网里面别人可以访问你的这个)
例如:http://192.168.84.155:3000/ 

注意点:不要触点cmd窗口 (避免窗口一直搜索(转圈圈))
修改后代码:要重新启动(原操作再来一遍就行了)在访问

请求响应代码

//引入核心模块        得到的http是一个对象
const http=require('htttp')
//console.log(http)
//创建服务
const server=http.createServer((requset,response)=>{
    
     //(客户端请求,设置本次请求的响应)
response.end('VCD口碑')//设置响应体    结束响应
})
//启动服务
server.listen(3000,()=>{
    
        //监听端口  (端口号,[回调函数])
console.log('你的服务器就绪','在3000端口')
//注意端口号按照http或https协议来的

})

请求:每请求一次,都会导致回调函数执行一次
响应:res.end() 的格式只能是buffer 或者string

url (Uniform Resource Locator,统一资源定位符)

协议://主机地址[:端口]/路径?查询字符串#锚点
(http或https)协议 主机地址(IP地址或者域名) 端口号(http默认80和https默认端口443)的可以省略 MySQL默认3306 路径:资源路径 ?后面是键值对形式 ?id=1&name=‘张潇潇’ 锚点:网页内部的链接

小结 : 1. req.url一定是以/开头的 2. 在现代浏览器中,它们会自动去请求服务器上的favicon.ico

content-type

告诉服务器请求体中携带的数据是什么类型 响应头中返回的是什么类型
通过response对象中的setHeader方法,来设置响应头,作用是告诉阅览器内容是什么格式方便处理.
参考
格式 res.setHeader('content-type', 值)

const http = require('http')
const fs = require('fs')
const path = require('path')
const server = http.createServer((req, res) => {
    
    
  // 省略其他
  if(url === '/' || url === '/index.html') {
    
    
    // 读出文件内容并返回
    // 省略其他
    res.setHeader('content-type', 'text/html;charset=utf8');

    res.end(content)
  } 
}

server.listen(8001, ()=>{
    
    
  console.log('服务器已经在8001启动');
})

重点:设置statusCode

格式res.statusCode = 值

res.statusCode = 301;
// res.setHeader('location','http://www.qq.com')  location 自己的IP
res.statusCode = 404
res.statusCode = 500
res.end()

Express是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架

** 框架:是一个半成品,用来快速解决一类问题;库就是工具集,使用非常灵活) (框架有:bootstrap, lay-ui, express, vue, react ; 库:zepto.js , jQuery, day.js, underscore, lodash, art-template, axios, echart…)
web 开发: 对不同的请求能够显示页面;提供接口服务;**
用法:引入第三方模块 利用强大而灵活的中间件特性
给用户提供更好的服务,方便拆卸请添加图片描述

初始化 npm init -y 下载npm i express

// 加载 Express
const express = require('express')

// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const app = express();

// 2. 设置请求对应的处理函数
app.use(express.static('public'))


// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))

路由和接口请添加图片描述

请添加图片描述
请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_43944285/article/details/124465910