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

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

基于注解的Controller接口這些高級功能你都知道嗎?

來源: 責編: 時間:2024-04-28 08:57:56 172觀看
導讀環境:SpringBoot2.7.181. 簡介基于注解的Controller接口,你可以使用 @RequestMapping 注解將請求映射到控制器方法。它有多種屬性,可根據 URL、HTTP 方法、請求參數、頭和媒體類型進行匹配。該注解可以在類上使用它來表

環境:SpringBoot2.7.18i1J28資訊網——每日最新資訊28at.com

1. 簡介

基于注解的Controller接口,你可以使用 @RequestMapping 注解將請求映射到控制器方法。它有多種屬性,可根據 URL、HTTP 方法、請求參數、頭和媒體類型進行匹配。該注解可以在類上使用它來表達共享映射,也可以在方法級使用它來縮小特定接口映射的范圍。i1J28資訊網——每日最新資訊28at.com

@RequestMapping 還有 HTTP 方法特定的快捷方式變體:i1J28資訊網——每日最新資訊28at.com

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

通過上面的注解,我們能更加具體的去匹配我們的Controller接口方法。這些注解在開發中都是些基本的操作,并且在絕大多數情況下使用這些接口完全夠用了。接下來將介紹幾個高級用法。i1J28資訊網——每日最新資訊28at.com

2. 實戰案例

2.1 HEAD、OPTIONS請求

對于head,options請求Spring并沒有提供對應的快捷注解,我們只能通過@RequestMapping注解來指定method屬性。i1J28資訊網——每日最新資訊28at.com

@GetMapping (和 @RequestMapping(method=HttpMethod.GET))支持 HTTP HEAD 透明請求映射。控制器方法無需更改。在 javax.servlet.http.HttpServlet 中應用的響應封裝器可確保 Content-Length 標頭被設置為寫入的字節數(而不會實際寫入響應)。如下示例:i1J28資訊網——每日最新資訊28at.com

@GetMapping("/h")public Object h() {  System.out.println("header....") ;  return "h method..." ;}

當上面的接口以head方式請求時,也是可以成功進入該方法的只是并不會輸出內容到客戶端,而僅僅是通過Content-Leng告知有多少個字節內容。i1J28資訊網——每日最新資訊28at.com

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

響應header中有Content-Lengthi1J28資訊網——每日最新資訊28at.com

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

對應HEAD請求我們完全可以通過GET方式來解決。i1J28資訊網——每日最新資訊28at.com

默認情況下,HTTP OPTIONS 的處理方式是將 Allow 響應頭設置為具有匹配 URL 模式的所有 @RequestMapping 方法中列出的 HTTP 方法列表。簡單說當你通過OPTIONS請求一個URL時,Allow的響應頭會設置為你@RequestMapping(method = ...)這里你method設置的列表+OPTIONS,如下示例:i1J28資訊網——每日最新資訊28at.com

@RequestMapping(value = "/o", method = {RequestMethod.DELETE, RequestMethod.HEAD})public Object o() {  System.out.println("o....") ;  return "h method..." ;}

當上面的接口通過OPTIONS請求時,那么響應header Allow將設置為如下:i1J28資訊網——每日最新資訊28at.com

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

如果你的@RequestMapping沒有指定method屬性值,那么Allow 頭信息會被設置為 GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS。上面的即可刪除method屬性再次請求如下:i1J28資訊網——每日最新資訊28at.com

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

2.2 自定義請求注解

在某些場景下你可能需要自定義自己的一些注解來配置通用的匹配模式,那么這時候通過自定義請求注解的方式是非常合適的,而不用你對每一個請求都去做重復的事。i1J28資訊網——每日最新資訊28at.com

自定義請求注解i1J28資訊網——每日最新資訊28at.com

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documented@RequestMappingpublic @interface PackMapping { @AliasFor(annotation = RequestMapping.class) String name() default ""; @AliasFor(annotation = RequestMapping.class) String[] value() default {}; @AliasFor(annotation = RequestMapping.class) // 配置只能是GET或POST方法 RequestMethod[] method() default {RequestMethod.GET, RequestMethod.POST} ; @AliasFor(annotation = RequestMapping.class) String[] path() default {}; @AliasFor(annotation = RequestMapping.class) String[] params() default {}; // 設置請求header必須包含X-API-Version并且值必須是v1 @AliasFor(annotation = RequestMapping.class) String[] headers() default {"X-API-Versinotallow=v1"}; @AliasFor(annotation = RequestMapping.class) String[] consumes() default {}; @AliasFor(annotation = RequestMapping.class) String[] produces() default {};}

測試Controller接口i1J28資訊網——每日最新資訊28at.com

@PackMapping("/v")public Object v() {  System.out.println("自定義請求注解....") ;  return "PackMapping method..." ;}

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

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

請求中必須攜帶X-API-Version請求header。i1J28資訊網——每日最新資訊28at.com

2.3 動態顯示注冊接口

你可以通過編程方式注冊處理程序方法,這些方法可以用于動態注冊或高級情況,例如不同URL下的同一處理程序的不同實例,如下示例:i1J28資訊網——每日最新資訊28at.com

@Configurationpublic class CustomWebConfig {  @Autowired  public void setHandlerMapping(RequestMappingHandlerMapping mapping, UserService handler)      throws NoSuchMethodException {    BuilderConfiguration options = new BuilderConfiguration() ;    options.setPatternParser(new PathPatternParser()) ;    RequestMappingInfo info = RequestMappingInfo.paths("/api/user/{id}").methods(RequestMethod.GET).options(options ).build();    Method method = UserHandler.class.getMethod("getUser", Integer.class) ;    mapping.registerMapping(info, handler, method);  }}

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

@Componentpublic class UserHandler {    @ResponseBody  public User getUser(@PathVairable("id")Integer id) {    User user = new User() ;    user.setId(id) ;    user.setName("張三") ;    return user ;  }}

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

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

以上是本篇文章的全部內容,如對你有幫助就請作者吃個棒棒糖

本文鏈接:http://www.tebozhan.com/showinfo-26-86065-0.html基于注解的Controller接口這些高級功能你都知道嗎?

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

上一篇: 淺析ServiceMesh和Istio,你學會了嗎?

下一篇: C#隊列(Queue)的基本使用,一文全掌握

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 多線程開發帶來的問題與解決方法

    使用多線程主要會帶來以下幾個問題:(一)線程安全問題  線程安全問題指的是在某一線程從開始訪問到結束訪問某一數據期間,該數據被其他的線程所修改,那么對于當前線程而言,該線程
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據官方此前宣布,三星將于7月26日在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
  • OPPO K11采用全方位護眼屏:三大護眼能力減輕視覺疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發布,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼IMX890主攝,堪稱是2000檔位影像表
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top