SringBoot-響應

響應數據

如何加載響應數據呢
其實在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);}@Overridepublic 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.pswp.cn/news/39016.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39016.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39016.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java真實面試題,offer已到手

關于學習 在黑馬程序員剛剛開始的時候學習盡頭非常足&#xff0c;到后面逐漸失去了一些興趣&#xff0c;以至于后面上課會出現走神等問題&#xff0c;但是畢業時后悔晚矣。等到開始學習項目一的時候&#xff0c;思路總會比別人慢一些&#xff0c;不看講義寫不出來代碼。 建議…

Lie group 專題:Lie 群

Lie group 專題&#xff1a;Lie 群 流形 流形的定義 一個m維流形是滿足以下條件的集合M&#xff1a;存在可數多個稱為坐標卡&#xff08;圖集&#xff09;的子集合族.以及映到的連通開子集上的一對一映射&#xff0c;,稱為局部坐標映射&#xff0c;滿足以下條件 坐標卡覆蓋M…

【Sklearn】基于多層感知器算法的數據分類預測(Excel可直接替換數據)

【Sklearn】基于多層感知器算法的數據分類預測(Excel可直接替換數據) 1.模型原理2.模型參數3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 多層感知器(Multilayer Perceptron,MLP)是一種前饋神經網絡,用于解決分類和回歸問題。它包含輸入層、若干個隱…

【數學建模】--灰色關聯分析

系統分析: 一般的抽象系統&#xff0c;如社會系統&#xff0c;經濟系統&#xff0c;農業系統&#xff0c;生態系統&#xff0c;教育系統等都包含有許多種因素&#xff0c;多種因素共同作用的結果決定了該系統的發展態勢。人們常常希望知道在眾多的因素中&#xff0c;哪些是主要…

leetcode 面試題 02.05 鏈表求和

?? 題目描述 &#x1f31f; leetcode鏈接&#xff1a;面試題 02.05 鏈表求和 ps&#xff1a; 首先定義一個頭尾指針 head 、tail&#xff0c;這里的 tail 是方便我們尾插&#xff0c;每次不需要遍歷找尾&#xff0c;由于這些數是反向存在的&#xff0c;所以我們直接加起來若…

深入理解設計模式-行為型之觀察者

概述 觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一種一對多的依賴關系&#xff0c;讓多個觀察者對象同時監聽一個主題對象&#xff0c;當主題對象發生變化時&#xff0c;所有依賴于它的觀察者對象都會得到通知并更新。 在…

如何安裝Python?

如何安裝Python&#xff1f; 安裝Python非常簡單&#xff0c;讓我們一步步來進行。 1. 訪問官方網站 首先&#xff0c;您需要訪問Python官方網站&#xff08;https://www.python.org/&#xff09;。在首頁上&#xff0c;您會看到一個大大的「Downloads」按鈕&#xff0c;點擊…

【Redis實踐篇】使用Redisson 優雅實現項目實踐過程中的5種場景

文章目錄 1.前言2.使用方式1. 添加Redisson依賴&#xff1a;2. 配置Redis連接信息3. 使用場景3.1. 分布式鎖3.2. 限流器&#xff08;Rate Limiter&#xff09;3.3. 可過期的對象&#xff08;Expirable Object&#xff09;3.4. 信號量&#xff08;Semaphore&#xff09;3.5. 分布…

ChatGPT在智能文檔搜索和信息抽取中的應用如何?

智能文檔搜索和信息抽取是信息檢索和知識管理領域中的關鍵問題&#xff0c;而ChatGPT作為一種強大的自然語言處理模型&#xff0c;正在這些領域發揮越來越重要的作用。在大數據時代&#xff0c;文檔數量龐大&#xff0c;信息量巨大&#xff0c;有效地搜索和抽取信息變得至關重要…

spfa判斷負環

思路&#xff1a; &#xff08;1&#xff09;負環&#xff1a;區別于正環&#xff0c;在求最短路過程中&#xff0c;正環會繞路&#xff0c;故不會被討論&#xff0c;而負環會不斷讓路總權更短&#xff0c;會讓算法不斷循環&#xff1b; &#xff08;2&#xff09;于是考慮統…

JVM---垃圾回收算法介紹

目錄 分代收集理論 三種垃圾回收算法 標記-清除算法&#xff08;最基礎的、基本不用&#xff09; 標記-復制算法 標記-整理算法 正式因為jvm有了垃圾回收機制&#xff0c;作為java開發者不會去特備關注內存&#xff0c;不像C和C。 優點&#xff1a;開發門檻低、安全 缺點…

windows Socket簡單編程實例

服務端 #include <winsock2.h> #include <string.h> #include <stdio.h> #include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message) {fputs(message, stderr);fputc(\n, stderr);exit(1); } int mai…

任我行CRM系統存在 SQL注入漏洞[2023-HW]

任我行CRM系統存在 SQL注入漏洞 一、 產品簡介二、 漏洞概述三、 復現環境四、 漏洞復現小龍POC又是一通哈拉少 五、 修復建議 免責聲明&#xff1a;請勿利用文章內的相關技術從事非法測試&#xff0c;由于傳播、利用此文所提供的信息或者工具而造成的任何直接或者間接的后果及…

學習ts(二)數據類型(接口和對象類型、數組類型)

interface 重名會重合到一起 如果兩個interface名稱相同&#xff0c;會把兩個合到一起 重復定義同一個需要類型相同 不能多或者減少屬性 設置任意key 當定義接口返回數據時&#xff0c;我們不確定接口會返回多少&#xff0c;知道所需要的固定屬性&#xff0c;其余屬性可以…

學習筆記十四:K8S最小調度單元POD概述

K8S最小調度單元POD概述 k8s核心資源Pod介紹Pod是什么Pod如何管理多個容器Pod網絡Pod存儲代碼自動發版更新收集業務日志 Pod工作方式自主式Pod控制器管理的Pod(防誤刪除) 如何基于Pod運行應用 k8s核心資源Pod介紹 K8s官方文檔&#xff1a;https://kubernetes.io/ K8s中文官方文…

【博客692】grafana如何解決step動態變化時可能出現range duration小于step

grafana如何解決step動態變化時可能出現range duration小于step 1、grafana中的step和resolution grafana中的 “step” grafana本身是沒有提供step參數的&#xff0c;因為儀表盤根據查詢數據區間以及儀表盤線條寬度等&#xff0c;對于不同查詢&#xff0c;相同的step并不能…

校園外賣小程序怎么做

校園外賣小程序是為滿足校園內學生和教職員工的外賣需求而開發的一種應用程序。它涵蓋了從用戶端、商家端、騎手端、電腦管理員到小票打印、多商戶入駐等多個方面的功能&#xff0c;以下將逐一介紹。 1. 用戶端功能&#xff1a;校園外賣小程序為用戶提供了便捷的訂餐和外賣服務…

Zmq適配Win7 SP0 / Win XP/ Win 2k

1.目的 由于發布版本的libzmq使用了較多新的系統特性&#xff0c;導致在低版本windows平臺上無法使用。 因此&#xff0c;需要對zmq源碼進行修改以適配低版本的系統&#xff0c;如Win7 SP0&#xff0c;Win XP&#xff0c;Win2003等等。 2.Win7 SP0 #if defined ZMQ_HAVE_WIN…

深入理解epoll

文章目錄 概述1. epoll_create - 創建一個epoll實例2. epoll_ctl - 控制epoll實例的事件結構體介紹events取值&#xff1a;data&#xff1a; 聯合體&#xff08;共用體&#xff09;&#xff1a; 3. epoll_wait - 等待事件發生偽代碼總結 概述 在網絡編程中&#xff0c;高效地處…

每天一道leetcode:797. 所有可能的路徑(圖論中等深度優先遍歷)

今日份題目&#xff1a; 給你一個有 n 個節點的 有向無環圖&#xff08;DAG&#xff09;&#xff0c;請你找出所有從節點 0 到節點 n-1 的路徑并輸出&#xff08;不要求按特定順序&#xff09; graph[i] 是一個從節點 i 可以訪問的所有節點的列表&#xff08;即從節點 i 到節…