ip协议和http协议

这篇文章不会讲ip协议和http协议的原理,流程等细节,只会讲我们在web开发时怎么运用这两个协议

ip协议

互联网上以ip地址标识每个设备的身份,所以当你要与某个设备进行沟通时,就要用ip协议来找到它

这就是ip协议需要我们掌握的最重要的用途:“找人

我们可以看看自己的电脑的ip地址,Windows系统使用下面的命令来查看

ipconfig

一个设备可以拥有多个ip地址,因为一个设备可以同时处在不同的局域网中

这里的192.168.239.144是我的PC在校园网中的ip地址,此时同时处于校园网内的其他设备,就可以通过192.168.239.144 访问我的PC

上面的172.17.240.1 是我的PC在 wsl 局域网中的ip地址,此时我安装的 wsl,就可以通过172.17.240.1 来访问我的PC(wsl 不了解的话我们在后续将会提到)

我们购买的服务器位于公网,其ip也被称为公网ip,我的PC位于内网,上面的两个ip地址是内网ip。也就是说,我的PC可以ping通我的服务器,但我的服务器却ping不通我的PC

在cmd中输入以下命令即可查看是否ping通:

ping {你的公网ip}

http协议

http协议是互联网极其常用的协议,其传递信息的形式基于http报文,一个简单的http请求报文(Request)一般是这样的形式:

下面是详解:(如果有不懂的可以根据关键词搜索,这里不再赘述)

除了请求报文之外,还有http响应报文,一个简单的http响应报文(Response)一般是这样的形式

下面是详解:

还有两个比较重要的概念:请求方法http状态码

请求方法有非常多,我们甚至可以自定义请求方法,一般来说,常用的请求方法有GETPOST

GET方法是http协议中默认的请求方法,你在浏览器中随便输入一个url地址,就会通过GET方法来访问,该方法用于向服务器获取信息

POST方法用于向服务器提交信息,提交的内容放在请求体中。请求体支持不同的格式,常用的格式有:纯文本(txt)、json、XML、表单等等

请求体的格式通过Content-Type请求头进行指定

这里重点讲解 表单格式 和 json格式 

一个使用表单格式的POST请求一般像这样:

表单使用键值对的方式来表示信息,以 符号分隔不同的键值对,和GET请求是一样的

一个使用json格式的POST请求一般像这样:

json格式表示信息的方法和python的字典、js的对象很像,由于其属于通用格式,在大多数编程语言中都能使用,所以在web领域广泛应用

要具体了解json格式:JSON教程

其他请求方法可以参考:HTTP请求方法

接下来我们来讲http状态码,它的数量也很多,我们没必要全部记住,比较重要的状态码有

200 OK :请求成功,一切正常

302 Found :资源重定向

403 Forbidden :一切正常,但是服务器拒绝处理该请求

404 not found :服务器无法根据客户端的请求找到资源,一般是url地址错了

500 Internal Server Error :服务器内部错误,一般是后端代码错了

根据不同的状态码,我们可以知道http 请求的处理情况,在debug时非常有用

想要了解其他状态码请参考:HTTP状态码

Cookie 技术

Cookie 以键值对的方式存储在本地浏览器中,在发送请求报文时,将会把Cookie添加到请求头中

Cookie一般用于身份的校验

使用fetch

fetch是JavaScript用于发送http请求和处理http响应的API,在不同的编程语言中,其提供的API也不尽相同,例如python的requests库、Vue框架的axios,如果你使用了其他语言/框架,就必须要使用其提供的API来发送报文。

前端与后端的沟通就要靠fetch来发送报文,下面是一些使用案例:

fetch("http://example.com/api?a=1",{
    //设置请求方法
    method: "POST",
    //设置请求头
    headers: {
        //没有这个请求头后端不认json
        "Content-Type": "application/json",
    },
    //设置请求体
    body: JSON.stringify({
        username: "admin",
        password: "admin123",
}),
})
.then((resp) => resp.json()) //当响应为json格式时的解析方法
.then((data) => console.log(data))
//定义异步函数(使用关键字 async)
async function send_form(url, form_id){
    //获取表单内容
    const form = new FormData(document.getElementById(form_id));
    //等待fetch完成(使用关键字await)
    const resp = await fetch(url, {
        method: "POST",
        headers: {
            "Content-Type": "x-www-form-urlencoded",
},
        body: form, //表单内容放置在请求体中
});
    return resp;
}

其他fetch API的用法请自行搜索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值