HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式

这篇具有很好参考价值的文章主要介绍了HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具


目录

一.HTTP协议 

二.HTTP请求数据格式 

请求方式

三.后端响应请求

基于SpringBoot响应数据

请求响应的参数类型

同一响应格式

四.Apifox(postman)使用方法


一.HTTP协议 

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

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

  1. 无连接性:HTTP默认是无连接的,即每个请求都是一个独立的、独立的事务。当服务器完成对客户端请求的响应后,会立即关闭连接,不会保持长连接。这种无连接性可以节省服务器资源,但也会增加每个请求的延迟,因为需要重新建立连接。
  2. 无状态性:HTTP协议是无状态的,即服务器不会保存客户端的状态信息。每个请求都是独立的,服务器不会记住之前的请求。为了处理这个问题,引入了Cookie和Session机制,通过在客户端和服务器之间传递标识符来跟踪会话状态。
  3. 请求-响应模型:HTTP通过请求-响应模型进行通信。客户端发送一个HTTP请求,服务器接收并处理请求,并返回一个HTTP响应。响应包含响应状态码、响应头和响应体
  4. 支持多种请求方法:HTTP定义了多种请求方法,最常见的是GET和POST。其他常见的方法有PUT、DELETE、HEAD等,用于不同的操作和目的
  5. 使用URL定位资源:HTTP使用统一资源定位符(URL)来标识要获取的资源地址。URL包含协议、主机名、端口号和资源路径。
  6. 使用TCP作为传输协议:HTTP默认使用TCP作为传输协议,通过建立TCP连接来传输数据。TCP提供可靠的、面向连接的通信。

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

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


二.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请求的请求参数在请求体中

下方是另一个响应的实例,在响应体中则展示了许多参数的信息HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

请求方式

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

  1. GET:用于从服务器获取资源,也是最常见的请求方式。GET请求将请求的参数附加在URL的末尾,发送给服务器。
  2. POST:用于向服务器提交数据,一般用于发送表单数据。POST请求将请求的参数放在请求的主体中,而不是URL中。
  3. PUT:用于向服务器上传文件或更新资源。PUT请求会将请求的数据存储在服务器上指定的位置。
  4. DELETE:用于删除服务器上的资源。
  5. HEAD:用于获取服务器对资源的头部信息,而不获取实际的资源内容。
  6. OPTIONS:用于获取服务器支持的请求方法。

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


三.后端响应请求

在现在主流的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";
    }

同一响应格式

在企业级开发中,为了方便阅读和管理,我们一般要求返回统一的数据格式

如下,各个响应的返回类型都不一样,这是不便于我们管理和操作的

@RestController
public class ResponseController {

    @RequestMapping("/hello")
    public String hello() {
        System.out.println("Hello world");
        return "Hello world";
    }

    @RequestMapping("/getAddr")
    public Address getAddress() {
        Address address = new Address();
        address.setProvice("河南省");
        address.setCity("洛阳市");
        return address;
    }

    @RequestMapping("/listAddr")
    public List<Address> listAddr() {
        List<Address> list = new ArrayList<>();

        Address addr1 = new Address();
        addr1.setProvice("河南省");
        addr1.setCity("洛阳市");

        Address addr2 = new Address();
        addr2.setProvice("广西省");
        addr2.setCity("桂林市");

        list.add(addr1);
        list.add(addr2);

        return list;
    }
}

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

@RestController
public class ResponseController {

    @RequestMapping("/hello")
    public Result hello() {
        System.out.println("Hello world");
        return new Result(1,"success","hello world");
    }

    @RequestMapping("/getAddr")
    public Result getAddress() {
        Address address = new Address();
        address.setProvice("河南省");
        address.setCity("洛阳市");
        return Result.success(address);
    }

    @RequestMapping("/listAddr")
    public Result listAddr() {
        List<Address> list = new ArrayList<>();

        Address addr1 = new Address();
        addr1.setProvice("河南省");
        addr1.setCity("洛阳市");

        Address addr2 = new Address();
        addr2.setProvice("广西省");
        addr2.setCity("桂林市");

        list.add(addr1);
        list.add(addr2);

        return Result.success(list);
    }
}

四.Apifox(postman)使用方法

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

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

大体界面是这样的

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

点击这里的运行

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

然后点击发送

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

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

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具

以上就是Apifox的基础使用方法,后序笔者会分享一些更高级的使用方式




HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具 本次的分享就到此为止了,希望我的分享能给您带来帮助,也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式,Web开发,经验分享,http,网络协议,spring boot,java-ee,Apifox,postman,测试工具文章来源地址https://www.toymoban.com/news/detail-837545.html

到了这里,关于HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP 和 HTTPS(请求响应报文格式 + 请求方法 + 响应状态码 + HTTPS 加密流程 + Cookie 和 Session)

    HTTP 全称 “ 超文本传输协议 ”,是一种基于传输层 TCP 协议实现的应用非常广泛的 应用层协议 我们平时打开一个网站,就是通过 HTTP 协议来传输数据的 当我们在浏览器中访问一个 “ 网址 ”(URL),浏览器就会给这个 URL 的服务器发送一个 HTTP 请求,服务器返回一个 HTTP 响

    2023年04月19日
    浏览(32)
  • HTTP 请求和响应的原理以及常见问题、解决办法

    在现代 Web 开发中,HTTP 请求和响应是最基本的通信方式。这两者是通过 HTTP 协议进行交互的,在前端和后台开发中都需要对其处理有一定的了解。我将为大家介绍 HTTP 请求和响应的处理原理以及常见问题和解决办法。 客户端向服务器发送请求,请求格式如下: 服务器接收到

    2024年02月10日
    浏览(31)
  • JS-27 前端数据请求方式;HTTP协议的解析;JavaScript XHR、Fetch的数据请求与响应函数;前端文件上传XHR、Fetch;安装浏览器插件FeHelper

    早期的网页都是通过后端渲染来完成的,即服务器端渲染(SSR,server side render): 客户端发出请求 - 服务端接收请求并返回相应HTML文档 - 页面刷新,客户端加载新的HTML文档; 服务器端渲染的缺点: 当用户点击页面中的某个按钮向服务器发送请求时,页面本质上只是一些数

    2024年02月16日
    浏览(45)
  • http 请求报文响应报文的格式以及Token cookie session 区别

    HTTP 请求报文和响应报文的格式如下: HTTP 请求报文格式: 方法 : 请求方法,例如 GET、POST、PUT、DELETE 等。 路径 : 请求的路径,表示需要访问的资源。 协议版本 : 使用的协议版本,通常是 HTTP/1.1 或 HTTP/2。 请求头部字段:包含了关于请求的附加信息,每个字段由字段名和对

    2024年02月16日
    浏览(40)
  • java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)

    实际开发中,可能需要发送http请求到第三方服务获取数据,于是就有以下应用: 依赖: 假设我需要在我的业务代码中调用该地址: url:http://xx.xx:xxxx/user/count 请求方法:post 内容类型:application/json 请求参数:id, username 返回参数:code 响应结果 int类型                  

    2024年02月12日
    浏览(38)
  • java实现调用http请求的几种常见方式

    ------ Oracle中文开发者社区 ------ 如果你想要学习编程,关注本博客,持续获得技术支持,持续获得技术咨询 java开发·企业官方账号 Oracle中国官方账号 Java中国管理部 全网粉丝30万+ 华为云享专家 阿里专家博主 CSDN内容合伙人 CSDN原力计划作者 51CTO专家博主 CSDN博客V账号 毕业于四川

    2024年02月04日
    浏览(33)
  • 详解Django请求与响应:深入理解Web Http交互的核心机制

    本文深入探讨了 Django 中的请求与响应处理,从 Django 请求和响应的基础知识、生命周期,到 HttpRequest 和 HttpResponse 对象的详细介绍。同时,讨论了 Django 的视图和请求、响应处理,以及安全性和异步处理的考虑。最后,对比了 Django 与 Flask、FastAPI 等框架在请求响应处理上的异

    2024年02月13日
    浏览(27)
  • 【Http协议④】常见的几种构造http请求的方式,form表单构造,Ajax构造,postman构造

    前言: 大家好,我是 良辰丫 ,这篇文章我将协同大家一起去学习几种构造http请求的方式.💞💞💞 🧑个人主页:良辰针不戳 📖所属专栏:javaEE初阶 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。 💦期待大家三连,关注,点赞,收藏。

    2024年02月06日
    浏览(40)
  • 前端异步请求并解决跨域问题(Ajax+axios框架)、后端响应多个数据(JSON)

    目录 一、前后端同步异步请求 1.同步请求: 2.异步请求: 3.跨域问题(前端问题) 4.axios框架(封装后) 二、后端向前端响应多个数据-JSON 1.同步请求:         发送一个请求,回应请求,回应的内容会覆盖浏览器中的内容,这样会 打断 前端其他的正常操作。 2.异步请求:

    2024年02月07日
    浏览(52)
  • node-red中http request节点各种复杂格式请求详解

    在node-red中,如果你想要请求外部资源,比如获取当地天气,这个时候就可以使用http request节点,这个节点可以让你的node-red应用集成各种接口,数据。不受跨域的限制,可以访问大部分的http接口。支持的请求方法也比较全,GET,PUT,POST,PATCH或DELETE都是可以的。并且支持自定义

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包