日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

SpringBoot中Controller接口參數(shù)還可以這樣玩?

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

環(huán)境:SpringBoot3.2.5Zew28資訊網(wǎng)——每日最新資訊28at.com

1. Optional包裝參數(shù)

請求參數(shù)通過java.util.Optional包裝Zew28資訊網(wǎng)——每日最新資訊28at.com

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

通過Optional接受參數(shù),效果等同于Zew28資訊網(wǎng)——每日最新資訊28at.com

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

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

2. 便捷獲取Servlet API

在請求參數(shù)中你可以使用WebRequest, NativeWebRequest兩個任意對象來獲取Request,Response,Session等對象。Zew28資訊網(wǎng)——每日最新資訊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" ;}

當(dāng)然你可以直接寫你需要的具體對象Zew28資訊網(wǎng)——每日最新資訊28at.com

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

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

3. 獲取當(dāng)前認(rèn)證用戶

你的請求參數(shù)還可以使用java.security.Principal該對象用來獲取當(dāng)前請求中已經(jīng)認(rèn)證過的用戶信息。這尤其在使用Spring Security時非常有用,在Security中的Authentication接口實(shí)現(xiàn)了Principal。Zew28資訊網(wǎng)——每日最新資訊28at.com

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

輸出如下:Zew28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Zew28資訊網(wǎng)——每日最新資訊28at.com

4. 獲取請求其它信息

你還可以非常方便的獲取當(dāng)前請求Method及Locale等信息。Zew28資訊網(wǎng)——每日最新資訊28at.com

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

除此之外,你還可以獲取時區(qū)信息java.util.TimeZone, java.time.ZoneId。Zew28資訊網(wǎng)——每日最新資訊28at.com

5. 讀取輸入流

將請求body中的內(nèi)容以流InputStream形式獲取。Zew28資訊網(wǎng)——每日最新資訊28at.com

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

輸出結(jié)果:Zew28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Zew28資訊網(wǎng)——每日最新資訊28at.com

6. 獲取Header&Body

通過HttpEntity獲取請求header及body內(nèi)容信息;Zew28資訊網(wǎng)——每日最新資訊28at.com

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

輸出結(jié)果:Zew28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Zew28資訊網(wǎng)——每日最新資訊28at.com

7. 獲取當(dāng)前請求URI

如果你想獲取當(dāng)前請求的Schema,Host,Port,上下文,那么你可以通過如下參數(shù)獲取Zew28資訊網(wǎng)——每日最新資訊28at.com

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

輸出結(jié)果:Zew28資訊網(wǎng)——每日最新資訊28at.com

Zew28資訊網(wǎng)——每日最新資訊28at.com

http://localhost:9001/api。Zew28資訊網(wǎng)——每日最新資訊28at.com

Zew28資訊網(wǎng)——每日最新資訊28at.com

只包含了schema://host:port/contextZew28資訊網(wǎng)——每日最新資訊28at.com

8. 獲取請求的部分

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

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

請求結(jié)果:Zew28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Zew28資訊網(wǎng)——每日最新資訊28at.com

你還可以以JSON對象讀取,如下:Zew28資訊網(wǎng)——每日最新資訊28at.com

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

注意,對象接受時,你需要設(shè)置每part的Content-TypeZew28資訊網(wǎng)——每日最新資訊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": "張三"}

沒有設(shè)置Content-Type將會拋出415錯誤。Zew28資訊網(wǎng)——每日最新資訊28at.com

9.重定向保存屬性

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

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

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

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

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

上一篇: Spring Cloud Gateway中優(yōu)化Netty線程池,提升系統(tǒng)性能

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

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 7月安卓手機(jī)性能榜:紅魔8S Pro再奪榜首

    7月份的手機(jī)市場風(fēng)平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領(lǐng)先版處理器的新機(jī)之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機(jī)廠商修整的時間,進(jìn)入8月份之
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機(jī)潮已經(jīng)過去,最明顯的肯定就是大內(nèi)存和存儲的機(jī)型了,另外部分中端機(jī)也取消了屏幕塑料支架
  • 6月安卓手機(jī)性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 2023 年的 Node.js 生態(tài)系統(tǒng)

    隨著技術(shù)的不斷演進(jìn)和創(chuàng)新,Node.js 在 2023 年達(dá)到了一個新的高度。Node.js 擁有一個龐大的生態(tài)系統(tǒng),可以幫助開發(fā)人員更快地實(shí)現(xiàn)復(fù)雜的應(yīng)用。本文就來看看 Node.js 最新的生
  • K8S | Service服務(wù)發(fā)現(xiàn)

    一、背景在微服務(wù)架構(gòu)中,這里以開發(fā)環(huán)境「Dev」為基礎(chǔ)來描述,在K8S集群中通常會開放:路由網(wǎng)關(guān)、注冊中心、配置中心等相關(guān)服務(wù),可以被集群外部訪問;圖片對于測試「Tes」環(huán)境或者
  • 分享六款相見恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊(duì)的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,&ldquo;7
  • 馮提莫簽約抖音公會 前“斗魚一姐”消失在直播間

    來源:直播觀察提起&ldquo;馮提莫&rdquo;這個名字,很多網(wǎng)友或許聽過,但應(yīng)該不記得她是哪位主播了。其實(shí),作為曾經(jīng)的&ldquo;斗魚一姐&rdquo;,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 8月見!小米MIX Fold 3獲得3C認(rèn)證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
Top 主站蜘蛛池模板: 新巴尔虎左旗| 天全县| 隆回县| 雷山县| 莆田市| 内丘县| 明水县| 页游| 镇雄县| 涞水县| 宾川县| 宜城市| 垣曲县| 怀化市| 兴国县| 响水县| 桂阳县| 资溪县| 高邑县| 枣阳市| 胶南市| 三原县| 济南市| 安西县| 虹口区| 微山县| 合山市| 横峰县| 秀山| 博兴县| 塔河县| 安康市| 延长县| 洛扎县| 黄浦区| 岐山县| 四会市| 宝清县| 全州县| 临夏县| 绥芬河市|