请求响应(学习笔记)

请求响应

文章目录

请求响应

  • 请求(HttpServeltRequest):获取请求数据
  • 响应(HttpServletResponse): 设置响应数据
  • BS架构:Browser/Server 浏览器/服务器 架构模式,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(维护方便,体验一般)
  • CS架构:Client/Server 客户端/服务端架构模式。(开发、维护麻烦,体验不错)

请求

Postman

当前最主流的开发模式:前后端分离开发。

由于前后端分离,后端开发没有前端页面,浏览器发送的请求都是get请求

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

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

简单参数

  • 原始方式

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

java 复制代码
package com.itheima;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class RequestController {
    //原始方式
    @RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request) {
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");

        int age = Integer.parseInt(ageStr);
        System.out.println(name+":"+age);
        return "OK";
    }
}


//使用postman发送Get请求
//http://localhost:8080/simpleParam?name=Tom&age=10
//ok
  • SpringBoot方式

    简单参数:参数名与形参变量名相同,定义形参即可接收参数

java 复制代码
    //SpringBoot方式
    @RequestMapping("simpleParam")
    public String simpleParam(String name,Integer age) {
        System.out.println(name+":"+age);
        return"OK";
    }

​ 简单参数:如果方法形参名称与请求参数名称不匹配,可以使用@RequestParam完成映射

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

//使用postname发送GET请求
//http://localhost:8080/simpleParam?name=ZAY&age=3
//

@RequestParm 中的required默认属性为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false

实体参数

当参数需要传输过多,使用简单参数就会变得繁琐,可以将所有的参数封装到一个实体类之中

  • 简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可
java 复制代码
    @RequestMapping("/simplePojo")
    public String simplePojo(User user) {
        System.out.println(user);
        return "OK";
    }

public class User{
    private String name;
    private Integer age;
    
    public User(String name,Integer age){
        this.name = name;
        this.age = age;
    }
    public User(){
        
    }
    
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }
    
    public Integer getAge(){
        return age;
    }
    
    public void setAge(Integer age){
        this.age = age;
    }
}
  • 复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数
java 复制代码
public class User{
    private String name;
    private Integer age;
    private Address address;
}

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

@RequestMapping("/complexPojo")
public String complexPojo(User user){
    Systm.out.println(user);
    return "OK";
}

数组集合参数

日期参数

JSON参数

路径参数

响应

分层解耦

相关推荐
传奇开心果编程7 分钟前
【Jetpack Compose基础语法学与练】第7课 if条件渲染 + 列表基础(LazyColumn)
学习·ui·kotlin·android jetpack
Rabitebla28 分钟前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
库玛西37 分钟前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
小贺儿开发1 小时前
Unity 结合百度AI开放平台 手写文字识别
人工智能·科技·学习·unity·云服务·文字识别·手写文字
传奇开心果编程1 小时前
【SwiftUI入门练中学】第1课 从零开始
学习·ui·ios·swiftui·swift
是隼人1 小时前
buuctf-pwn ciscn_2019_sw_1(32位只有一次格式化机会)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
传奇开心果编程1 小时前
【Jetpack Compose基础语法学与练】第9课 SideEffect副作用 + LaunchedEffect,处理异步任务和生命周期
android·学习·ui·kotlin·android jetpack
传奇开心果编程1 小时前
【ArkUI 练中学】第14课:应用性能优化实战
学习·ui·华为·harmonyos
PNP Robotics2 小时前
【PNP具身解读】GPT6 Astra:具身智能新范式,大模型 + Franka机器人快速落地验证一、GPT6 Astra 背后的布局、数据与具身方向
人工智能·学习·机器学习·机器人
小李不想当小白2 小时前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb