<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 使用 @RequestHeader 獲取請(qǐng)求頭常用方式

          共 2831字,需瀏覽 6分鐘

           ·

          2022-06-10 04:13


          Spring 提供了@RequestHeader 注解用來獲取請(qǐng)求頭。

          1. 獲取單個(gè)請(qǐng)求頭

          例如,獲取 user-id 請(qǐng)求頭

          @RequestMapping("/getSingleHeader")public Map<String, Object> getSingleHeader(@RequestHeader("user-id") String userId){        Map<String, Object> result = new HashMap<>();        result.put("code", 0);        result.put("msg", "success");        result.put("userId", userId);????????return?result;}

          測(cè)試

          curl -X POST \??http://127.0.0.1:8080/getSingleHeader?\  -H 'user-id: A10010'


          2. 一次性獲取所有請(qǐng)求頭

          方式一:使用 Map 接收所有請(qǐng)求頭

           @RequestMapping("/getAllHeaders")public Map<String, Object> listAllHeaders(@RequestHeader Map<String, String> headers) {        Map<String, Object> result = new HashMap<>();        headers.forEach((key, value) -> {            // 日志中輸出所有請(qǐng)求頭            System.out.println(String.format("Header '%s' = %s", key, value));        });        result.put("code", 0);        result.put("msg", "success");        result.put("headers", headers);         return result;}

          測(cè)試

          curl -X POST \  http://127.0.0.1:8080/getAllHeaders \  -H 'company-id: 1001' \  -H 'user-id: A10010'

          日志打印

          Header 'host' = 127.0.0.1:8080Header 'connection' = keep-aliveHeader 'content-length' = 0Header 'user-id' = A10010Header?'company-id'?=?1001

          方式二:使用 MultiValueMap 接收所有請(qǐng)求頭

          @RequestMapping("/listHeaders")public Map<String, Object> listHeaders(@RequestHeader MultiValueMap<String, String> headers) {        Map<String, Object> result = new HashMap<>();        headers.forEach((key, value) -> {             // 日志中輸出所有請(qǐng)求頭            System.out.println(String.format("Header '%s' = %s", key, value));        });        result.put("code", 0);        result.put("msg", "success");        result.put("headers", headers);????????return?result;}

          測(cè)試

          curl -X POST \  http://127.0.0.1:8080/listHeaders \  -H 'company-id: 1001' \  -H 'user-id: A10010'

          日志打印

          Header 'host' = [127.0.0.1:8080]Header 'connection' = [keep-alive]Header 'content-length' = [0]Header?'user-id'?=?[A10010]Header?'company-id'?=?[1001]

          可以發(fā)現(xiàn)如果一個(gè)請(qǐng)求頭存在多個(gè)值的時(shí),可以使用 MultiValueMap 接收所有請(qǐng)求頭。查看?MultiValueMap 源碼,發(fā)現(xiàn)?MultiValueMap?實(shí)現(xiàn)了?Map>

          方式三:使用 HttpHeaders 接收所用請(qǐng)求頭

          @RequestMapping("/getAllHttpHeaders")public?Map<String,?Object>?getAllHttpHeaders(@RequestHeader?HttpHeaders?headers)?{        headers.forEach((key, value) -> {             // 日志中輸出所有請(qǐng)求頭            System.out.println(String.format("getAllHttpHeaders '%s' = %s", key, value));        });        Map<String, Object> result = new HashMap<>();        result.put("code", 0);        result.put("msg", "success");        result.put("headers", headers);        return result;}

          測(cè)試

          curl -X POST \  http://127.0.0.1:8080/getAllHttpHeaders \  -H 'company-id: 1001' \  -H 'user-id: A10010'

          日志打印

          getAllHttpHeaders 'host' = [127.0.0.1:8080]getAllHttpHeaders 'connection' = [keep-alive]getAllHttpHeaders 'content-length' = [0]getAllHttpHeaders 'user-id' = [A10010]getAllHttpHeaders 'company-id' = [1001]

          查看 HttpHeaders?源碼發(fā)現(xiàn)?MultiValueMap

          如果在項(xiàng)目中需要接收多個(gè)請(qǐng)求,使用?MultiValueMap 和 HttpHeaders 的選擇,可以節(jié)省參數(shù)個(gè)數(shù),使得代碼整潔;當(dāng)然,如果就接受一兩個(gè)請(qǐng)求頭,直接使用?RequestHeader? 注解就可以。

          記得點(diǎn)「」和「在看」↓

          愛你們

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(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>
                  日本高潮在线观看 | 自拍视频二区 | 小早川怜子高潮无码 | 豆花成人无码视频 | 国产一级a毛一级a看免费漫画 |