<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot中的 6 種API請(qǐng)求參數(shù)讀取方式

          共 3238字,需瀏覽 7分鐘

           ·

          2024-05-23 08:30

          使用Spring Boot開發(fā)API的時(shí)候,讀取請(qǐng)求參數(shù)是服務(wù)端編碼中最基本的一項(xiàng)操作,Spring Boot中也提供了多種機(jī)制來滿足不同的API設(shè)計(jì)要求。

          接下來,就通過本文,為大家總結(jié)6種常用的請(qǐng)求參數(shù)讀取方式。如果你發(fā)現(xiàn)自己知道的不到6種,那么趕緊來查漏補(bǔ)缺一下。如果你知道的不止6種,那么告訴大家,一起互相學(xué)習(xí)一下吧~

          @RequestParam

          這是最最最最最最常用的一個(gè)了吧,用來加載URL中?之后的參數(shù)。

          比如:這個(gè)請(qǐng)求/user?name=didispace 就可以如下面這樣,使用@RequestParam來加載URL中的name參數(shù)

          @GetMapping("/user")
          @ResponseBody()
          public User findUserByName(@RequestParam("name") String name)
              return userRepo.findByName(name);
          }

          @PathVariable

          這是RESTful風(fēng)格API中常用的注解,用來加載URL路徑中的參數(shù)

          比如:這個(gè)請(qǐng)求/user/1 就可以如下面這樣,使用@PathVariable來加載URL中的id參數(shù)

          @GetMapping("/user/{id}")
          @ResponseBody()
          public User findUserById(@PathVariable("id") String id)
              return userRepo.findById(id);
          }

          @MatrixVariable

          這個(gè)我們用的并不是很多,但一些國(guó)外系統(tǒng)有提供這類API參數(shù),這種API的參數(shù)通過;分割。

          比如:這個(gè)請(qǐng)求/books/reviews;isbn=1234;topN=5; 就可以如下面這樣,使用@MatrixVariable來加載URL中用;分割的參數(shù)

          @GetMapping("/books/reviews")
          @ResponseBody()
          public List<BookReview> getBookReviews
            @MatrixVariable String isbn,  @MatrixVariable Integer topN)
           
          {
            return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN);
          }

          @RequestBody

          這也是最常用的一個(gè)注解,用來加載POST/PUT請(qǐng)求的復(fù)雜請(qǐng)求體(也叫:payload)。比如,客戶端需要提交一個(gè)復(fù)雜數(shù)據(jù)的時(shí)候,就要將這些數(shù)據(jù)放到請(qǐng)求體中,然后服務(wù)端用@RequestBody來加載請(qǐng)求體中的數(shù)據(jù)

          @PostMapping("/add")
          public boolean addAccounts(@RequestBody List<Account> accounts) throws SQLException {
               accounts.stream().forEach(a -> {
                   a.setCreatedOn(Timestamp.from(Instant.now()));
                   a.setLastLogin(Timestamp.from(Instant.now()));
               });
               return notificationLogic.addAccounts(accounts);
          }

          @RequestHeader

          @RequestHeader注解用來加載請(qǐng)求頭中的數(shù)據(jù),一般在業(yè)務(wù)系統(tǒng)中不太使用,但在基礎(chǔ)設(shè)施的建設(shè)中會(huì)比較常用,比如傳遞分布式系統(tǒng)的TraceID等。用法也很簡(jiǎn)單,比如,假設(shè)我們將鑒權(quán)數(shù)據(jù)存在http請(qǐng)求頭中,那么就可以像下面這樣用@RequestHeader來加載請(qǐng)求頭中的Authorization參數(shù)

          @GetMapping("/user")
          @ResponseBody()
          public List<User> getUserList(@RequestHeader("Authorization") String authToken) {
               return userRepo.findAll();
          }

          @CookieValue

          當(dāng)我們需要與客戶端保持有狀態(tài)的交互時(shí),就需要用到Cookie。此時(shí),服務(wù)端讀取Cookie數(shù)據(jù)的時(shí)候,就可以像下面這樣用@CookieValue來讀取Cookie中的SessionId數(shù)據(jù)

          @GetMapping("/user")
          @ResponseBody()
          public List<User> getUserList(@CookieValue(name = "SessionId") String sessionId) {
               return userRepo.findAll();
          }

          好了,今天的分享就到這里。這些方式你都知道嗎?如果有學(xué)到新知識(shí),歡迎點(diǎn)贊支持。如果你還知道其他方式,也歡迎評(píng)論分享。

          我們創(chuàng)建了一個(gè)高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會(huì)優(yōu)秀起來,趕緊點(diǎn)擊加群,享受一起成長(zhǎng)的快樂。



          你還在購買國(guó)內(nèi)的各種昂貴又低質(zhì)的技術(shù)教程嗎?這里給大家推薦下我們自研的Youtube視頻語音轉(zhuǎn)換插件(https://youtube-dubbing.com/),一鍵外語轉(zhuǎn)中文,英語不好的小伙伴也可以輕松的學(xué)習(xí)油管上的優(yōu)質(zhì)教程了,下面是演示視頻,可以直觀的感受一下:
          如果您覺得這款插件不錯(cuò),也可以推薦給您身邊的朋友,目前我們開通了分享賺錢功能,只要安裝本插件登錄注冊(cè)之后,獲取邀請(qǐng)鏈接,放到你的博客側(cè)邊欄、友情鏈接或者發(fā)到朋友圈、微博、X等社交平臺(tái),就能獲得積分,積分現(xiàn)在是可以i直接提現(xiàn)的哦~

          推薦閱讀

          為什么不推薦在Spring Boot中使用@Value加載配置

          太強(qiáng)了!有了這個(gè)插件,打破語言障礙,用中文看任何視頻!

          三個(gè)實(shí)用開源項(xiàng)目工具:無代碼編輯器

          Java 經(jīng)典《Core Java》速學(xué)版來了!


          點(diǎn)擊閱讀原文,直達(dá)Java新特性專欄

          瀏覽 334
          1點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          1點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文有码一区二区三区 | 中日韩欧美视频操逼 | 久久久久久成人影片 | 一级性爱视频中文字幕 | 国产精品肏屄视频 |