网络原理————HTTP

发布于:2025-05-12 ⋅ 阅读:(14) ⋅ 点赞:(0)

我们上一期讲解了HTTP是什么,协议格式,还有HTTP请求报文的详解,今天来带大家继续学习HTTP

1,HTTP响应详解

我们先来学习状态码,状态码是什么,状态码就是访问一个页面的结果,是访问失败,还是访问成功,失败的原因是什么等等~

不知道大家用没用过一种洗衣机,有的洗衣机让他运行,但如果盖子没盖上的话就会有报警,并且显示屏上还有红红的一串数字,此时我们就能去洗衣机的说明书上找到这个码对应的问题,我们看到原因是盖子没盖上就可以做出解决方法了;

我们可以去网站上去搜状态码

不止这些,还有很多很多,我们这里不需要全部了解,掌握一些常见的就可以了,

1) 200 ok

当响应的的首行出现的状态吗是200是,表示我们访问成功;

2) 404 Not Found

没有找到资源,我们之前说过URL是标识网络上的唯一资源,URL中的IP定位到主机,端口号定位到目标应用程序,path定位到程序管理的资源,这几个之中任何一个不对都找不到对应的资源,另外,以2开头的状态码都表示访问成功,以4开头的表示客户端出现问题,比如路径输入错了之类的,而以5开头的就是服务端出错了,比如代码有问题;

3) 403 Forbidden

访问受限,这个典型场景就是登录后操作,我们现在登录gitte,之后点击个人主页

我们进入之后,拿到个人管理的URL,

完了退出登录

之后直接输入URL没有弹出403嗷,但是直接跳转到了登录这,说明我们是没有权限去直接访问这个URL的 

 4) 405 Method Not Allowed

请求的方法与声明的注解不匹配,这个是啥意思呢,我们过两天就讲解Spring了,我们会讲到注解,其中有PostMapping,GetMapping,如果我们传入错误的请求报文,比如post传get,就会发生这种状态码;

5) 500 Internal Server Error

服务器内部出现错误,一般是服务器代码抛出异常没有正确去处理,导致服务器崩溃,这里说一下,编译失败可不是运行时异常;

5) 504 Gateway Timeout

来字面理解下,Gateway是网关的意思,网关超时,啥意思,我们发送访问请求,但是这会服务器资源可能很紧张,所以可能就没法准时把响应返回给客户端,或者就返回不了了,就会有这样的超时状态码;

5) 302 Move temporarily

临时重定向,怎么说呢,就是你访问服务器A,服务器A让你去访问B,这就是临时重定向,举一个例子,当前网站可能进行了升级,并且重新确定了域名,如果我们还没有及时通知用户的时候,就会出现大部分用户无法访问网站的情况,这一定会造成很大的负面影响,那么我们就在访问就域名的时候跳转到新域名,就解决问题了;

报文中会有一个Location字段来表示要跳转到那个URL;

2,通过From表单构造HTTP请求

这里还不会的话先不看,等我更新下一期,我带着大家把前端的知识都过一遍:

我们使用From表单构造HTTP请求,我们创建一个SpringBoot项目,

@RequestMapping("/Request")
@RestController
public class RequestController {
    @RequestMapping("/h1")
    public String h1(String usedId,String password){
        return usedId + password;
    }
}

接受两个参数,我们现在要构造HTTP请求,使用html, 

<form action="http://127.0.0.1:8080/Request/h1" method="get">
    <input type="text" name="usedId">
    <input type="password" name="password">
    <input type="submit" value="提交">
</form>

这里简单给大家讲一下嗷,from就是提交表单,可以把这里的元素提交到后端,input是标签,输入框,Type是类型,我们设置为文本类型,name指定为useId,第二个标签设置为密码类型,第三个就是提交了,第一个没说,action就是URL,后面对应报文的方法,我们试试提交;

输入之后就会打印我们的输入的东西了,还有就是刚的name就是查询字符串的key,我们输入的值就是查询字符串中对应的value;

3,通过ajax构造HTTP请求

ajax呢JavaScript给服务器发送Http请求的一种方式,它的特点就是不需要跳转页面和刷新页面,这个我们后面会重点讲,大家多用就好了,用用就记住了;

先看前端代码:

<body>
        <h1>计算器</h1>
        数字1:<input name="num1" type="text" id="num11"><br>
        数字2:<input name="num2" type="text" id="num22"><br>
        <input type="submit" value=" 点击相加 " onclick="hei()">
        <span id="result"></span>
</body>

我们再来构建后端代码:

@RequestMapping("CalcController")
@RestController
public class CalcController {
    @RequestMapping("Calc")
    public Integer Calc(Integer num1,Integer num2){
        return num1+num2;
    }
}

我们再通过ajax发送请求:

 

<script>
    function onclick() {
        $.ajax({
            type:"get",
            url:"CalcController/Calc",
            data:{
                num1: $("#num11").val(),
                num2: $("#num22").val()
            },
            success: function (result){
                if(result==null){
                    alert("参数出错了")
                }else{
                    $("#result").html(result);
                }
            }
        })
    }
</script>

这里呢,我们给input框赋上了一个onclick方法,我们点击框的时候就会触发,$.ajax({})是固定的,我们在里面写内容,type是请求的方法,url是我们要访问的接口,data是参数,需要对应到后端的形参的名字,对应不上的话会有找不到,$("#num11).val()就是获得输入的值,success:是成功响应后做什么,这里使用一个方法,之后,获取参数并做出相应的操作;到这里http就算完了,我们下期见。


网站公告

今日签到

点亮在社区的每一天
去签到