中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot如何實現獲取前端傳遞的參數

發布時間:2020-07-27 15:36:42 來源:億速云 閱讀:184 作者:小豬 欄目:編程語言

這篇文章主要講解了springboot如何實現獲取前端傳遞的參數,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

url里的參數

通過url里傳過來的參數一般有三種方式,下面我們來看一下

路徑參數

路徑參數就是說在請求路徑里攜帶了幾個參數,比如有一個查詢banner詳情的接口,/v2/banner/123,這里的123就是參數,可以表示banner的ID。

下面我們設計了一個簡陋的接口,來演示路徑參數的獲取

@RestController
@RequestMapping(value = "/v2/banner")
public class BannerController {

  @GetMapping("/{id}")
  public Integer getBannerDetail(@PathVariable Integer id){
    return id;
  }
}

獲取banner詳情完整接口路徑是/v2/banner/{id},這里的id就是路徑參數,在方法的傳參里,用@PathVariable注解標明那個參數用來接收請求路徑傳遞過來的值,通過postman發個請求看看

springboot如何實現獲取前端傳遞的參數

這里要注意,接口路由里定義的參數名要和方法參數里的定義名字要一樣,如果不一樣需要通過@PathVariable來指定**

@GetMapping("/{id}")
public Integer getBannerDetail(@PathVariable(name = "id") Integer id12){
  return id12;
}

查詢參數

查詢參數就是請求的url里?號后面跟的鍵值對,比如/v2/banner?id=123,下面我們重新定義一個借口,采用查詢參數的形式獲取banner詳情

springboot如何實現獲取前端傳遞的參數

請求url里的查詢參數通過@RequestParam注解可以和方法里的參數進行一一對應,比如現在有這么個url:/v2/banner?id=123&pos=3,那么接口的參數定義就得是@RequestParam Integer id, @RequestParam Integer pos,請求上面定義的接口看看返回值

springboot如何實現獲取前端傳遞的參數

路徑參數和查詢參數結合

路徑參數和查詢時可以同時使用的,那在定義接口的時候,同時使用這兩種注解就行,比如下面的接口

@GetMapping("/{id}")
public Map<String, Object> getBannerDetail(@PathVariable Integer id, @RequestParam Integer pos){
  Map<String, Object> body = new HashMap<>();
  body.put("id", id);
  body.put("pos", pos);
  return body;
}

請求一下接口

springboot如何實現獲取前端傳遞的參數

請求body里的參數

先來思考一個問題,當前端傳遞過來一個json的數據,我們的方法通過什么樣的形式能夠接受到參數呢?

一般來說有兩種形式,Map和自定義對象,下面我們分別來介紹一下。

Map

設計簡單的banner創建接口,參數通過Map來接收,創建成功后,添加一個id,然后將傳遞的數據和id一起返回

@PostMapping(value = "/create")
public Map<String, Object> createBanner(@RequestBody Map<String, Object> banner){
  banner.put("id", 1243);
  return banner;
}

這里@RequestBody的這個注解來將body里的參數,轉化成一個map,請求一下接口看看正常不:

springboot如何實現獲取前端傳遞的參數

上面我們使用的Map,它是一個接口,在具體接收數據的時候,肯定會用一個Map的實現類,這就會設計到裝箱拆箱的過程,那么頻繁的裝箱拆箱會有一定到的性能損耗,所以這種方式一般并不推薦使用。

自定義對象Dto

我們將接收請求參數的對象稱作為數據傳輸對象,一般定義為XXXDto,這里我們定義一個創建banner時用來接收參數的對象BannerCreateDto.

public class BannerCreateDto {
  private String name;
  private Integer pos;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Integer getPos() {
    return pos;
  }

  public void setPos(Integer pos) {
    this.pos = pos;
  }
}

在Controller具體使用:

@PostMapping(value = "/create")
public Map<String, Object> createBanner(@RequestBody BannerCreateDto dto){
  Map<String, Object> res = new HashMap<>();
  res.put("id", 10000);
  res.put("name", dto.getName());
  res.put("pos", dto.getPos());
  return res;
}

用@RequestBody標記BannerCreateDto對象,spring-boot會自動調用對象的getter和setter給他賦值。我們請求一下看看:

springboot如何實現獲取前端傳遞的參數

看完上述內容,是不是對springboot如何實現獲取前端傳遞的參數有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柞水县| 普宁市| 宜兰市| 大安市| 黄龙县| 萍乡市| 秦皇岛市| 大英县| 固镇县| 杂多县| 胶南市| 定西市| 赣州市| 美姑县| 敦煌市| 房山区| 上饶县| 广安市| 巴青县| 阿瓦提县| 石家庄市| 沂源县| 怀远县| 辽宁省| 余姚市| 太谷县| 偏关县| 都兰县| 九寨沟县| 柳州市| 永吉县| 东宁县| 阿拉善盟| 丰原市| 永春县| 广灵县| 林芝县| 涞源县| 阿图什市| 峡江县| 弥勒县|