SringBoot-响应

news2024/11/25 8:18:18

响应数据

如何加载响应数据呢
其实在SpringBoot,已经有名为@RessponseBody的方法注解为我们提供的响应的方法,他的作用是将方法返回值直接响应,如果返回值类型为实体对象/集合,则会转换为JSON格式响应。
而@RestController已经在内部集成好了@RessponseBody。
我们可以看到@RestController的定义,他已经在内部同时集成了Controller和ResponseBody

@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@org.springframework.stereotype.Controller
@org.springframework.web.bind.annotation.ResponseBody
public @interface RestController {
    @org.springframework.core.annotation.AliasFor(annotation = org.springframework.stereotype.Controller.class)
    java.lang.String value() default "";
}

我们分别以三种形式建立响应,分别是hello()字符串、getAddr()对象(JSON)、getAddrList()集合数组(数组-JSON)。

package com.ztt.controller;


import com.ztt.Pojo.Address;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class ResponseController {

    @RequestMapping("/hello")   // 浏览器请求/hello就会自动调用下面的方法
    public String hello(){
        System.out.println("Hello World");
        return "Hello World";
    }

    @RequestMapping("/getAddr")
    public Address getAddr()
    {
        Address addr = new Address();
        addr.setCity("西安");
        addr.setProvince("陕西");
        return addr;
    }

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

        Address addr = new Address();
        addr.setCity("西安");
        addr.setProvince("陕西");

        Address addr2 = new Address();
        addr.setCity("深圳");
        addr.setProvince("广东");

        list.add(addr);
        list.add(addr2);

        return list;
    }

}

响应结果为:
在这里插入图片描述
在这里插入图片描述

统一的响应数据

刚刚上面我们已经实现了数据的响应,但是我们响应结果很复杂,包括了三种变量的响应,这其实不利于我们对接口的管理;一般工程级的项目需要提供统一的响应管理来对结构进行构造。

在这里插入图片描述

为此我们在com.ztt.Pojo包下,创建了Result类,其将为我们提供code、msg(返回信息)、data(响应体数据)

package com.ztt.Pojo;

public class Result {
    private Integer code; // 1表示成功,0表示失败
    private String msg; //返回提示信息
    private Object data; // 返回具体到响应体的数据

    public Result(){}

    public Integer getCode() {
        return code;
    }
    public Result(Integer code,String msg,Object data){
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
    
    // 快速创建的静态方法
    public  static Result success(Object data)
    {
        return new Result(1,"success",data);
        
    }
    public static Result success(){
        return new Result(1,"success",null);
                
    }
    public static Result error(String msg){
        return new Result(0,msg,null);
        
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}

重写上面的响应

package com.ztt.controller;


import com.ztt.Pojo.Address;
import com.ztt.Pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class ResponseController {

    @RequestMapping("/hello")   // 浏览器请求/hello就会自动调用下面的方法
    public Result hello(){
        System.out.println("Hello World");
        return new Result(1,"success","Hello World");  //传统的方式新建对象并返回
    }

    @RequestMapping("/getAddr")
    public Result getAddr()
    {
        Address addr = new Address();
        addr.setCity("西安");
        addr.setProvince("陕西");
        return Result.success(addr);   // 用静态方式快速构建
    }

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

        Address addr = new Address();
        addr.setCity("西安");
        addr.setProvince("陕西");

        Address addr2 = new Address();
        addr.setCity("深圳");
        addr.setProvince("广东");

        list.add(addr);
        list.add(addr2);

        return Result.success(list);
    }

}

响应结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/881877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java后端开发需要掌握什么知识和技能?干货来了

Java作为一种广泛应用于软件开发中的编程语言&#xff0c;其独特的编写风格、代码复用性以及多平台兼容性等特点&#xff0c;使其成为软件开发领域中最受欢迎的编程语言之一。然而&#xff0c;Java后端开发需要掌握什么知识和技能?下面就让小编为大家介绍一些Java开发常用的知…

idea格式化日志打印

Live Template 需要在Live Templates里面创建一个模板组为MyTemplate 触发时机选择java 1、创建一个loge log.error($content$,$params$); content groovyScript("def params _3.collect {【it {}】}.join(, ); return \" _1 . _2 () exception > (params…

【kubernetes】k8s高可用集群搭建(三主三从)

目录 【kubernetes】k8s高可用集群搭建&#xff08;三主三从&#xff09; 一、服务器设置 二、环境配置 1、关闭防火墙 2、关闭selinux 3、关闭swap 4、修改主机名&#xff08;根据主机角色不同&#xff0c;做相应修改&#xff09; 5、主机名映射 6、将桥接的IPv4流量…

6-1_ADC示例分析

1.参考代码示例 PRJ_M66_4.3.3\boards\apollo4l_blue_eb\examples\peripherals\adc_measure\src\adc_measure.c 本篇基于Apollo4BlueLite 4.3.3版本的SDK中adc_measure.c示例的代码进行分析。 2. 代码流程 &#xff08;1&#xff09;初始化一路GPIO作为ADC输入 &#xff0…

P4500Q22CLRP 半导体放电管 品牌厂家 现货直供

防浪涌过电压保护电路中&#xff0c;常用的过电压保护器件有&#xff1a;半导体放电管TSS、TVS瞬态抑制二极管、压敏电阻MOV、陶瓷气体放电管GDT&#xff0c;其中半导体放电管TSS和陶瓷气体放电管GDT属于开关型过压保护器件&#xff0c;压敏电阻MOV和TVS瞬态抑制二极管属于钳位…

金蝶软件实现导入Excel数据分录行信息到单据体分录行中

>>>适合KIS云专业版V16.0|KIS云旗舰版V7.0|K/3 WISE 14.0等版本<<< 金蝶软件中实现[导入Excel数据业务分录行]信息到[金蝶单据体分录]中,在采购订单|采购入库单|销售订单|销售出库单等类型单据中,以少量的必要字段在excel表格中按模板填列好,很方便快捷地从…

app测试和web测试有什么区别

1.性能方面: web页面可能更关注响应时间&#xff0c;而app更关注流量、电量、QPS。 2.系统架构方面&#xff1a; web项目&#xff0c;一般都是b/s架构&#xff0c;基于浏览器的&#xff0c;而app则是c/s的&#xff0c;必须要有客户端。在系统测试的时候就会产生区别了。首从…

使用ntp服务器调整linux系统时间(附带代码示例)

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen 为了防止应用在系统上运行时候&#xff0c;系统时间与真实时间出现误差。可以调用ntp服务器获取正确的时间进行调整 NTP简介 网络时间协议&#xff08;NTP&…

Qt扫盲-QTableView理论总结

QTableView理论总结 一、概述二、导航三、视觉外观四、坐标系统五、示例代码1. 性别代理2. 学生信息模型3. 对应视图 一、概述 QTableView实现了一个tableview 来显示model 中的元素。这个类用于提供之前由QTable类提供的标准表&#xff0c;但这个是使用Qt的model/view架构提供…

mysql 8.0.20不停机主从同步

一、环境 CentOS &#xff1a; 7.3.1611 (Core) mysql&#xff1a;8.0.20 二、遇到的问题 1.查看主从同步发现下列问题 error connecting to master repl192.168.0.21:3306 - retry-time: 60 retries: 4 message: Authentication plugin caching_sha2_password reported e…

https协议的nginx请求http协议tomcat,出现静态文件js访问不到的情况!

复现问题&#xff1a; 访问https://1.1.1.1:443/aaa,页面出现静态js,css请求失败&#xff01; F12查看&#xff1a; 分析问题&#xff1a; 问题的根源应该就是浏览器的安全机制&#xff0c;不允许在嵌套在https的页面中进行http请求吧&#xff0c;结合google想到这个应该可以…

用dcker极简打包java.jar镜像并启动

用dcker极简打包java.jar镜像并启动 一、本地打包好jar包 二、新建文件夹&#xff0c;将步骤1中的jar包拷贝到文件夹下 三、同目录下新建Dockerfile ## 基础镜像&#xff0c;这里用的是openjdk:8 FROM openjdk:8## 将步骤一打包好的jar包 拷贝到镜像的 跟目录下[目录可以自定义…

真想学技术,还是不要去外包了,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

群折射率$ n_g$与有效折射率$ n_{eff}$的关系详细推导(假设$ \lambda_0$为真空入射光波长)

这个关系应该在环谐振器相关的资料中挺常见的。 其中&#xff1a; 注意 β \beta β为传播常数。

我都30了,还能不能做软件测试?

今天在CSDN看到一个问答&#xff0c;我都30了&#xff0c;还能不能做软件测试&#xff1f;我本来想直接回答&#xff0c;但回答的明显字数不够用。所以就干脆就把想说的都记录下来写一篇文章。 1.我今年30岁了&#xff0c;还适不适合做软件测试&#xff1f; 我认为&#xff0c;…

合并单元格

需求&#xff1a; 合并 相同名称的产品 先说下elementUI合并单元格的方法&#xff0c;先计算好要合并的行数rowspan&#xff0c;return {rowspan&#xff0c;colspan}&#xff0c;其他的单元格return{0,0} getData(params) {//临时数组&#xff0c;存放产品名称相同的数量this…

helm安装harbor + nerdctl 制作push 镜像

参考 文章&#xff1a;Helm部署Harbor_helm harbor_风向决定发型丶的博客-CSDN博客 安装好后使用 nerd containerd对接harbor_containerd 容器 insecure-registries 配置_柠是柠檬的檬的博客-CSDN博客 推送镜像 Containerd 对接私有镜像仓库 Harbor - 知乎 接下来我们来…

2023年7月京东洗衣机行业品牌销售排行榜(京东数据分析软件)

2023年上半年&#xff0c;洗衣机市场表现平淡&#xff0c;同环比来看出货量都有一定程度的下滑。7月份&#xff0c;洗衣机市场仍未改变这一下滑态势。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;7月份&#xff0c;京东平台洗衣机的销量为109万&#xff0c;环比下降…

企业为什么需要档案管理系统?

在当今的信息化社会&#xff0c;企业的数据和信息越来越多&#xff0c;而且日益复杂。而这些数据和信息都是企业运营的重要资源&#xff0c;它们的管理与否&#xff0c;直接影响到企业的决策效率&#xff0c;甚至是企业的生存发展。然而&#xff0c;传统的纸质档案管理方式已经…

机器学习实战:Python基于KDE核密度估计进行分布估计(十六)

文章目录 1. 前言1.1 KDE简介1.2 KDE应用领域 2. diy数据集实战演示2.1 导入函数2.2 自定义数据2.3 可视化数据2.4 KDE建模 3. 参数探讨3.1 带宽3.2 选择最佳带宽3.2 核函数 3.4 挑选合适核函数4. 讨论 1. 前言 1.1 KDE简介 核密度估计&#xff08;Kernel Density Estimation…