HTTP请求响应详解及Apifox使用方式教程,网络安全零基础入门到精通实战教程!

01、HTTP协议

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议。

HTTP的特点和工作原理如下:

  • 无连接性

    HTTP默认是无连接的,即每个请求都是一个独立的、独立的事务。当服务器完成对客户端请求的响应后,会立即关闭连接,不会保持长连接。这种无连接性可以节省服务器资源,但也会增加每个请求的延迟,因为需要重新建立连接。

  • 无状态性

    HTTP协议是无状态的,即服务器不会保存客户端的状态信息。每个请求都是独立的,服务器不会记住之前的请求。为了处理这个问题,引入了Cookie和Session机制,通过在客户端和服务器之间传递标识符来跟踪会话状态。

  • 请求-响应模型

    HTTP通过请求-响应模型进行通信。客户端发送一个HTTP请求,服务器接收并处理请求,并返回一个HTTP响应。响应包含响应状态码、响应头和响应体。

  • 支持多种请求方法

    HTTP定义了多种请求方法,最常见的是GET和POST。其他常见的方法有PUT、DELETE、HEAD等,用于不同的操作和目的。

  • 使用URL定位资源:

    HTTP使用统一资源定位符(URL)来标识要获取的资源地址。URL包含协议、主机名、端口号和资源路径。

  • 使用TCP作为传输协议:

    HTTP默认使用TCP作为传输协议,通过建立TCP连接来传输数据。TCP提供可靠的、面向连接的通信。

HTTP协议由请求和响应组成,它们都由报文(message)组成。报文包括报文头和报文体。报文头包含了请求/响应行、报文头部字段和换行符等信息。报文体包含了实际的请求/响应数据,如HTML文档。

总结起来,HTTP是一种简单、灵活、无连接、无状态的协议,广泛应用于Web开发和数据传输。它使用URL定位资源,通过请求-响应模型进行通信,使用TCP作为传输协议。

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

02、HTTP请求数据格式

HTTP请求格式是由三部分组成:

1、请求行(Request line):包括请求方法、URL和协议版本。

  • 请求方法(Request method):表示要执行的操作,常见的方法有GET、POST、PUT、DELETE等。

  • URL(Uniform Resource Locator):表示要访问的资源路径。

  • 协议版本(Protocol version):表示使用的HTTP协议版本,如HTTP/1.1。

2、请求头部(Request headers):包括一些关于请求的额外信息,如User-Agent、Content-Type、Authorization等。

3、请求体(Request body):用于传输请求的数据,对于GET请求来说,请求体通常为空。

以下是一个示例HTTP请求的格式:

GET /index.html HTTP/1.1  
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,\*/\*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

在这个示例中:

  • 请求行包括GET方法URL为/index.html协议版本为HTTP/1.1

  • 请求头部包括HostUser-AgentAcceptAccept-EncodingAccept-Language等字段。

  • 请求体为空,因为这是一个GET请求。

在上述实例中,申明了该请求是GET请求,我们最常用的请求方式就是GET和POST请求,二者在请求参数的传递中有很大不同,正如上述实例中所说:

  • GET请求的请求参数在请求行中,没有请求体

  • POST请求的请求参数在请求体中

下方是另一个响应的实例,在响应体中则展示了许多参数的信息

请求方式

除了上述最常用的GET请求和POST请求外,在HTTP请求响应中还有如下其他的请求方式

笔者这里选取一些相对常用的进行介绍:

  • GET

    用于从服务器获取资源,也是最常见的请求方式。GET请求将请求的参数附加在URL的末尾,发送给服务器。

  • POST

    用于向服务器提交数据,一般用于发送表单数据。POST请求将请求的参数放在请求的主体中,而不是URL中。

  • PUT

    用于向服务器上传文件或更新资源。PUT请求会将请求的数据存储在服务器上指定的位置。

  • DELETE

    用于删除服务器上的资源。

  • HEAD

    用于获取服务器对资源的头部信息,而不获取实际的资源内容。

  • OPTIONS

    用于获取服务器支持的请求方法。

此外,对于其他一些不太常见的请求方式,比如PATCH、TRACE等,用途较少。

03、后端响应请求

在现在主流的Web开发中,当前端给后端发送请求后,后端就需要响应这个请求,执行对应需要的操作,然后加工数据再返回给前端,从而达到前后端分离更高效的维护项目。

以下方代码举例,在传统的Java编程中,我们需要在Controller方法中申明HttpServletRequest对象,然后通过这个对象去拿到前端传给我们的数据,最后返回给前端一个“OK”的字符串。

//原始方式  
@RestController
public class RequestController {
    @RequestMapping("/getNameAge") //请求数据的路径
    public String getNameAge(HttpServletRequest request) {
        //获取请求参数
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");
  
        int age = Integer.parseInt(ageStr);

        //... ...
        return "OK";
    }
}

基于SpringBoot响应数据

但这样的方式是非常低效的,我们可以通过使用Spring框架来帮助我们更高效的实现功能和需求

如下代码,使用SpringBoot的话在代码量上只管的就可以感受到快捷和轻便

//SpringBOot方式  
@RestController
public class RequestController {
    //简单类型参数
    @RequestMapping("/getNameAge")
    public String getNameAge(String name,Integer age) {
        //... ...
        return "OK";
    }

使用SpringBoot的话只需要请求参数名和方法形式参数变量名相同,框架就会自动帮我们进行类型转化并且拿到数据

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

请求响应的参数类型

关于请求响应的参数部分,既可以是非常简单的基础类型,也可以是复杂的自定义类型

public class Student {  
    private String name;
    private String age;
    private Address address;
}
public class Address {
    private String provice;
    private String city;
}
//复杂类型参数  
    @RequestMapping("/getpojo")
    public String getPojo(Student student) {
        System.out.println(student);
        return "OK";
    }

比如我们这里,自定义一个学生类,再在参数中使用学生类对象进行接收

此外数组和集合也是可以作为参数的

    //数组参数  
    @RequestMapping("/array")
    public String getArray(String\[\] hobby) {
        System.out.println(Arrays.toString(hobby));
        return "ok";
    }
    //集合参数  
    @RequestMapping("/list")
    public String getList(@RequestParam List<String> hobby) {
        System.out.println(hobby);
        return "ok";
    }

但是需要注意,在使用集合作为参数的时候,需要加上注解****@RequestParam****

日期时间参数在使用的时候同上,也要加上对应的注解****@DateTimeFormat****

    //日期时间参数  
    @RequestMapping("/getdatetime")
    public String getTime(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime localDateTime) {
        System.out.println(localDateTime);
        return "OK";
    }

还可以使用JSON格式的参数,但需加上对应的注解****@RequestBody****

    //JSON参数  
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody Student student) {
        System.out.println(student);
        return "OK";
    }

路径参数也是在开发中最常用的一种,加上注释****@PathVariable****声明它是路径变量

   //路径参数  
    @RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id) {
        System.out.println(id);
        return "OK";
    }

存在多个路径参数的时候,可以用 ‘/’ 将他们分开

    //路径参数  
    @RequestMapping("/path/{id}/{name}")
    public String pathParam2(@PathVariable Integer id,@PathVariable String name) {
        System.out.println(id + "--" +name);
        return "OK";
    }

同一响应格式

在企业级开发中,为了方便阅读和管理,我们一般要求返回统一的数据格式,如下,各个响应的返回类型都不一样,这是不便于我们管理和操作的

因此我们写一个统一返回结果的类,然后将上述各自的返回值封装成这个结果类,然后统一进行返回

经过上述的改善后,我们就可以得到如下的代码

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

04、Apifox(postman)使用方法

对于上述HTTP的请求响应和后端响应数据我们有了一些基础的理解后,我们就可以通过一些工具来帮助我们测试,我们能否成功的向后端发起请求,能否成功的拿到后端返回的数据,对此我们可以借助一些接口管理工具,诸如Yapi,postman,Apifox等

笔者这里使用Apifox进行举例,各个工具之间的使用方式是通用的,因此不需要担心方法不兼容的问题。

大体界面是这样的

我们这里只是进行基础的使用,我们可以点击目录旁边的添加接口

点击创建接口后,我们就可以看见如下的界面

对于数据请求的路径,除了图中说明的端口号后,还需注意端口号后的路径必须和请求路径相同,如下图 /hello 和接口中的 /hello 相同,所以就会调用这个 hello()方法

笔者这里给个示例,我们先运行Java项目,在控制台中就会显示本地的服务器端口号,如下图显示为8080

点击这里的运行

然后点击发送

然后就会根据路径找到项目中对应的方法,返回我们需要的数据

以上就是Apifox的基础使用方法

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
在这里插入图片描述
在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:
在这里插入图片描述
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值