springboot|Controller接收處理GET,POST請求入參

  • 2019 年 12 月 2 日
  • 筆記

Controller 接收入參

入參通常來說分兩個情況,一種是Get, 一種是POST

Get請求的入參處理

/**   * @Author https://www.javastudy.cloud   * @CreateTime 2019/11/3   **/  @RestController  public class ParamController {        /**       * 這裡使用了 GetMapping 和 @RequestMapping(method = RequestMethod.GET)是一樣的       * 在方法入參的位置,把每個參數都平鋪開來       * @return       */      @GetMapping("param/handleGetParam1")      public String handleGetParam1(String param1, String param2){          String result = String.format("in handle1 param1 is %s, param2 is %s", param1, param2);          return result;      }        /**       * 把入參封裝成一個實體,如果請求參數過多,一般大於5個時,用這種方法       * @param demo       * @return       */      @GetMapping("param/handleGetParam2")      public String handleGetParam2(ParamDemo demo){          String result = String.format("in handle2 param1 is %s, param2 is %s", demo.param1, demo.param2);          return result;      }        /**       * 使用靜態內部類,簡單定義一個入參實體類       */      static class ParamDemo{          private String param1;          private String param2;            public String getParam1() {              return param1;          }            public void setParam1(String param1) {              this.param1 = param1;          }            public String getParam2() {              return param2;          }            public void setParam2(String param2) {              this.param2 = param2;          }      }  }

結果如下:

post請求入參處理

/**       * Post 請求入參也可以這樣平鋪使用       * 一般適用於前端Header中Content-Type為application/x-www-form-urlencoded的場景       * @param param1       * @param param2       * @return       */      @PostMapping("param/handlePostParam1")      public String handlePostParam1(String param1, String param2){          String result = String.format("in handle1 param1 is %s, param2 is %s", param1, param2);          return result;      }        /**       * 入參為一個實體類的形式,沒有任何註解       * 一般適用於參數個數較多,在Header中Content-Type為application/x-www-form-urlencoded的場景       * @param demo       * @return       */      @PostMapping("param/handlePostParam2")      public String handlePostParam2(ParamDemo demo){          String result = String.format("in handle2 param1 is %s, param2 is %s", demo.param1, demo.param2);          return result;      }        /**       * 請求入參是一個實體,並且加上了 @RequestBody       * 一般適用於前端Header中Content-Type 為 application/json的場景       * 注意入參要是json格式       * @param demo       * @return       */      @PostMapping("param/handlePostParam3")      public String handlePostParam3(@RequestBody ParamDemo demo){          String result = String.format("in handle2 param1 is %s, param2 is %s", demo.param1, demo.param2);          return result;      }

PostMan模擬請求結果如下: 模擬時注意修改Header中Content-Type的值

模擬時注意修改Header中Content-Type的值

DEMO總評

入參處理這塊不是很複雜,主要是要和前端的Header中的Content-Type對應,本次DEMO只講了String類型的入參處理,後面會分享文件,數組等複雜類型的入參處理. 還有一種入參是@PathVariable的形式,這種在實際入開發中使用的少之又少,可以學習,不推薦實際開發中使用.加油吧!