前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文带你快速了解JavaWeb中的请求响应以及Postman工具的使用!

一文带你快速了解JavaWeb中的请求响应以及Postman工具的使用!

作者头像
reload
发布2024-03-22 18:09:16
1961
发布2024-03-22 18:09:16
举报
文章被收录于专栏:Java后端Java后端

这次来了解一下JavaWeb中请求响应相关的内容,本篇将带你快速了解JavaWeb中的请求响应以及Postman工具的使用!

一、请求响应

1、概述

体系结构图如下,

1.1 请求

请求(HttpServletRequest):获取请求数据

1.2 响应

响应(HttpServletResponse):设置响应数据

1.3 两种软件架构方式

1) BS架构

Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。

优点是维护起来较方便,但给用户的体验较一般。

注:一般来说用Java语言开发的应用程序都是基于 BS架构。

2)CS架构

Client/Server,客户端/服务器架构模式。需要单独安装客户端。

缺点是开发维护麻烦,但能给用户较好的体验。

2、Postman

2.1 概述

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。

作用:常用于进行接口测试

下载地址:https://www.postman.com/downloads/

关于Postman的下载,非常简单,不再赘述。

2.2 基本使用

首次使用,需要注册登录。登录进去如下图,首先点击 Workspaces创建工作空间 ->Create Workspace,输入名称,选择可见范围,点击创建即可,如下。

创建完成后,添加请求并测试。首先启动我们SpringBoot的入门程序,并成功在浏览器中访问。

对应的controller类如下

代码语言:javascript
复制
package com.itweb.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// 请求处理类
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("Hello World~");
        return "Hello World~";
    }
}

然后在Postman中添加请求并测试,响应回来的数据也是 Hello World~,说明测试成功!

如要保存,直接按 ctrl+s,命名并添加集合(文件夹)即可。

3、请求相关的参数

3.1 简单参数

1)原始方式

在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取。

缺点:繁琐,且需要手动类型转换

总结

1、Controller方法形参中声明HttpServletRequest对象

2、调用对象的getParameter(参数名)

2)SpringBoot方式

情况一:参数名与形参变量名相同,定义形参即可接收参数。

总结

1、请求参数名与方法形参变量名相同 2、会自动进行类型转换

情况二:方法形参名称与请求参数名称不匹配,可以使用 @RequestParam完成映射。

Postman中新建一个GET请求用于测试,GET请求如下

controller控制类中添加的代码如下

代码语言:javascript
复制
    @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam(name = "name")String username,Integer age){
        System.out.println(username+ ":"+age);
        return "OK";
    }

注:@RequestParam中的 required属性默认为true,表示该请求参数必须传递,如果不传递将报错。若该参数是可选的,则可以将 required属性设置为 true

总结

1、方法形参名称与请求参数名称不匹配,通过该注解完成映射

2、该注解的required属性默认是true,代表请求参数必须传递

3.2 实体参数

1)简单实体对象

请求参数名与形参对象属性名相同,定义POJO接收即可

2)复杂实体对象

请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJ0属性参数。

3)总结

请求参数名与形参对象属性名相同,即可直接通过POJO接收

3.3 数组集合参数

1)数组参数

请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

2)集合参数

请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系

注:集合变量名要和请求参数名保持一致,并且要在前面加上 @RequestParam,这样才能将多个请求参数的值封装到 List集合。

具体步骤如下:

Postman中新建一个GET请求用于测试,GET请求的请求路径如下

代码语言:javascript
复制
http://localhost:8080/listParam?hobby=game&hobby=java&hobby=sing

controller控制类中添加的代码如下

代码语言:javascript
复制
    @RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby){
        System.out.println(hobby);
        return "OK";
    }

重新启动并清空控制台,方便查看输出结果,直接点击Postman的send,发现成功输出OK。

再返回IDEA的控制台查看,发现成功输出了 [game, java, sing]

3)小结

数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装

集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系

3.4 日期参数 & JSON参数

1)日期参数

使用 @DateTimeFormat注解完成日期参数格式转换

具体步骤如下:

Postman中新建一个GET请求用于测试,请求路径(即url)如下

代码语言:javascript
复制
http://localhost:8080/dateParam?updateTime=2024-03-20 15:06:45

controller控制类中添加的代码如下

代码语言:javascript
复制
    @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
        System.out.println(updateTime);
        return "OK";
    }

重新启动并清空控制台,方便查看输出结果,直接点击Postman的send,发现成功输出OK。

再返回IDEA的控制台查看,发现成功输出了时间

2)JSON参数

JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识

具体步骤如下:

Postman中新建一个POST请求用于测试,请求路径(即url)如下

代码语言:javascript
复制
http://localhost:8080/jsonParam

选择Body ->row ->json,添加 json格式的数据

代码语言:javascript
复制
{
    "name":"Tom",
    "age":10,
    "address":{
        "province":"beijing",
        "city":"beijing"
    }
}

controller控制类中添加的代码如下

代码语言:javascript
复制
    // JSON参数
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "OK";
    }

重新启动并清空控制台,方便查看输出结果,直接点击Postman的send,发现成功输出OK。

再返回IDEA的控制台查看,发现成功输出了集合数据

注:用到的两个pojo实体类如下,分别提供对应的 get、set和 toString方法

(User类)

代码语言:javascript
复制
package com.itweb.pojo;

public class User {
    private String name;
    private Integer age;
    private Address address;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

(Address类)

代码语言:javascript
复制
package com.itweb.pojo;

public class Address {
    private String province;
    private String city;

    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}
3.5 路径参数

路径参数

通过请求URL直接传递参数,使用{..}来标识该路径参数,需要使用 @PathVariable 获取路径参数

相关的代码演示同上,不再赘述。

4、响应

4.1 响应数据

图解如下

4.2 @ResponseBody

1)类型

方法注解、类注解

2)位置

Controller方法上/类上

3)作用

将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应

4)说明

@RestController = @Controller +@ResponseBody

5)两种方式

1、未统一前,如下

2、统一响应结果 -> Result (code,msg,data)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农后端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、请求响应
    • 1、概述
      • 1.1 请求
      • 1.2 响应
      • 1.3 两种软件架构方式
    • 2、Postman
      • 2.1 概述
      • 2.2 基本使用
    • 3、请求相关的参数
      • 3.1 简单参数
      • 3.2 实体参数
      • 3.3 数组集合参数
      • 3.4 日期参数 & JSON参数
      • 3.5 路径参数
    • 4、响应
      • 4.1 响应数据
      • 4.2 @ResponseBody
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档