AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

SpringBoot中Controller接口參數還可以這樣玩?

來源: 責編: 時間:2024-06-13 08:48:40 142觀看
導讀環境:SpringBoot3.2.51. Optional包裝參數請求參數通過java.util.Optional包裝@GetMapping("/optional")public Object optional(Optional<String> name) { return String.format("請求參數: %s", name.orElse("")) ;

環境:SpringBoot3.2.5NCe28資訊網——每日最新資訊28at.com

1. Optional包裝參數

請求參數通過java.util.Optional包裝NCe28資訊網——每日最新資訊28at.com

@GetMapping("/optional")public Object optional(Optional<String> name) {  return String.format("請求參數: %s", name.orElse("")) ;}

通過Optional接受參數,效果等同于NCe28資訊網——每日最新資訊28at.com

public Object optional(@RequestParam(required=false) String name){}

與將required設置為false效果一樣(@RequestHeader同樣)NCe28資訊網——每日最新資訊28at.com

2. 便捷獲取Servlet API

在請求參數中你可以使用WebRequest, NativeWebRequest兩個任意對象來獲取Request,Response,Session等對象。NCe28資訊網——每日最新資訊28at.com

@GetMapping("/servlet/api")public Object servletApi(WebRequest request, NativeWebRequest webRequest) {  String name = request.getParameter("name") ;  // 獲取Servlet API  HttpServletRequest req = webRequest.getNativeRequest(HttpServletRequest.class) ;  HttpServletResponse resp = webRequest.getNativeResponse(HttpServletResponse.class) ;  HttpSession session = webRequest.getNativeRequest(HttpSession.class) ;  return "servlet api" ;}

當然你可以直接寫你需要的具體對象NCe28資訊網——每日最新資訊28at.com

public Object servletApi(HttpServletRequest req,   HttpServletResponse resp) {  // ...}

NativeWebRequest本身提供了很多通用的方法,并且還可以獲取其它對象,使用起來更加方便。NCe28資訊網——每日最新資訊28at.com

3. 獲取當前認證用戶

你的請求參數還可以使用java.security.Principal該對象用來獲取當前請求中已經認證過的用戶信息。這尤其在使用Spring Security時非常有用,在Security中的Authentication接口實現了Principal。NCe28資訊網——每日最新資訊28at.com

@GetMapping("/principal")public Object principal(Principal principal) {  return principal ;}

輸出如下:NCe28資訊網——每日最新資訊28at.com

圖片圖片NCe28資訊網——每日最新資訊28at.com

4. 獲取請求其它信息

你還可以非常方便的獲取當前請求Method及Locale等信息。NCe28資訊網——每日最新資訊28at.com

@GetMapping("/other")public Object other(HttpMethod method, Locale locale) {  return method.name() + ", " + locale.toString() ;}// 輸出GET, zh_CN

除此之外,你還可以獲取時區信息java.util.TimeZone, java.time.ZoneId。NCe28資訊網——每日最新資訊28at.com

5. 讀取輸入流

將請求body中的內容以流InputStream形式獲取。NCe28資訊網——每日最新資訊28at.com

@PostMapping("/inputStream")public Object inputStream(InputStream is) throws Exception {  return String.format("讀取到內容: %s",     StreamUtils.copyToString(is, StandardCharsets.UTF_8)) ;}

輸出結果:NCe28資訊網——每日最新資訊28at.com

圖片圖片NCe28資訊網——每日最新資訊28at.com

6. 獲取Header&Body

通過HttpEntity獲取請求header及body內容信息;NCe28資訊網——每日最新資訊28at.com

@PostMapping("/httpentity")public Object httpentity(HttpEntity<String> entity) {  return Map.of(    "headers", entity.getHeaders(),     "body", entity.getBody()  ) ;}

輸出結果:NCe28資訊網——每日最新資訊28at.com

圖片圖片NCe28資訊網——每日最新資訊28at.com

7. 獲取當前請求URI

如果你想獲取當前請求的Schema,Host,Port,上下文,那么你可以通過如下參數獲取NCe28資訊網——每日最新資訊28at.com

@GetMapping("/uri")public Object uri(UriComponentsBuilder builder) {  return builder.toUriString() ;}

輸出結果:NCe28資訊網——每日最新資訊28at.com

NCe28資訊網——每日最新資訊28at.com

http://localhost:9001/api。NCe28資訊網——每日最新資訊28at.com

NCe28資訊網——每日最新資訊28at.com

只包含了schema://host:port/contextNCe28資訊網——每日最新資訊28at.com

8. 獲取請求的部分

如果你的請求是multipart/form-data,那么你可以通過如下方式獲取部分請求信息NCe28資訊網——每日最新資訊28at.com

@PostMapping("/requestpart")public Object requestpart(@RequestPart("user") String user) {  return user ;}

請求結果:NCe28資訊網——每日最新資訊28at.com

圖片圖片NCe28資訊網——每日最新資訊28at.com

你還可以以JSON對象讀取,如下:NCe28資訊網——每日最新資訊28at.com

public Object requestpart(@RequestPart("user") User user)

注意,對象接受時,你需要設置每part的Content-TypeNCe28資訊網——每日最新資訊28at.com

Content-Type: multipart/mixed--edt7Tfrdusa7r3lNQc79vXuhIIMlatb7PQg7VpContent-Disposition: form-data; name="user"Content-Type: application/json; charset=UTF-8Content-Transfer-Encoding: 8bit{  "age": 20,  "name": "張三"}

沒有設置Content-Type將會拋出415錯誤。NCe28資訊網——每日最新資訊28at.com

9.重定向保存屬性

指定在發生重定向時使用的屬性(即要附加到查詢字符串中的屬性)以及要在重定向請求期間臨時存儲的屬性。NCe28資訊網——每日最新資訊28at.com

@PostMapping("/")public String handleFileUpload(RedirectAttributes redirectAttributes) {  // 重定向后能夠獲取到這里指定的屬性信息  redirectAttributes.addFlashAttribute("message", "You successfully uploaded file!");  // 重定向  return "redirect:/";}

通過該種方式,重定向后頁面中也能獲取設置的屬性信息。NCe28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-93507-0.htmlSpringBoot中Controller接口參數還可以這樣玩?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Spring Cloud Gateway中優化Netty線程池,提升系統性能

下一篇: VS Code 常用快捷鍵大全

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 0糖0卡0脂 旭日森林仙草烏龍茶優惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時要賣為79.9元,今日下單領取50元優惠券,到手價為29.9元。產品規格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 三星電子Q2營收60萬億韓元 存儲業務營收同比仍下滑超過50%

    7月27日消息,據外媒報道,從三星電子所發布的財報來看,他們主要利潤來源的存儲芯片業務在今年二季度仍不樂觀,營收同比仍在大幅下滑,所在的設備解決方案
  • 支持aptX Lossless無損傳輸 iQOO TWS 1賽道版發布限時優惠價369元

    2023年7月4日,“無損音質,聲動人心”iQOO TWS 1正式發布,支持aptX Lossless無損傳輸,限時優惠價369元。iQOO TWS 1耳機率先支持端到端aptX Lossless無
  • DRAM存儲器10月價格下跌,NAND閃存本月價格與上月持平

    10月30日,據韓國媒體消息,自今年年初以來一直在上漲的 DRAM 存儲器的交易價格僅在本月就下跌了近 10%,此次是全年首次降價,而NAND 閃存本月價格與上月持平。市
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現在已經可以購買了,這款筆記本電腦被譽為世界上最薄的 14 英寸游戲筆
Top