91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么讓Spring Rest接口中路徑參數可選

發布時間:2021-11-01 09:16:28 來源:億速云 閱讀:241 作者:小新 欄目:開發技術

小編給大家分享一下怎么讓Spring Rest 接口中路徑參數可選,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Spring Rest接口路徑參數可選

我有一個 Spring Rest 服務,其中有一個路徑參數是可選的(實際情況是我原來將參數放到路徑中,而另外一個前端通過 body 傳給我)。按照傳統的方式是把這個服務在代碼里面分成兩個方法,一個帶路徑參數,一個不帶,但是這樣看起來不優雅,讓人疑惑。

我試著給 @PathVariable 注解加上 require=false 注解,但是不起作用,返回404錯誤。

下面的形式就是傳統方式:

@RequestMapping(value = "/path/{id}")
public String getResource(@PathVariable String id) {
  return service.processResource(id);
} 
@RequestMapping(value = "/path")
public String getResource() {
  return service.processResource();
}

但是我真的不喜歡這種方式,臃腫。

從 Spring 4 and Java 8 開始(其實和 Java 8 關系不大),在一個方法里面實現可選路徑參數變得很簡單,如下所示,就是同時定義兩個路由:

@RequestMapping(value = {"/path", "/path/{id}")
public String getResource(@PathVariable Optional<String> id) {
  if (id.isPresent()) {
    return service.processResource(id.get());
  } else {
    return service.processResource();
  }
}

確實,在一個方法里面統一業務要優雅得多。

RestFul風格傳參

RestFul風格就是所有參數都由/傳遞,而不是傳統的?xx&xx形式

例如:寫一個Controller:

package controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RestfulController {
@RequestMapping("/add")
public String test(int a,int b, Model model){
int res = a+b;
model.addAttribute("msg","結果為"+res);
return "test";
}
}

可以看到出現a,b沒找到的錯誤

怎么讓Spring Rest接口中路徑參數可選

按照傳統方式傳遞參數:?a=1&b=2

怎么讓Spring Rest接口中路徑參數可選

那么按照Restful風格傳遞參數就應該:在方法參數值前加@PathVariable注解,并在url上直接綁定參數,可以同時設置Request的方法類型(GET、POST、DELETE、OPTIONS、HEAD、PATCH、PUT、TRACE)

@PathVariable:讓方法參數的值對應綁定到一個url模板變量上

package controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RestfulController {
@RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.GET)
public String test(@PathVariable int a,@PathVariable int b, Model model){
int res = a+b;
model.addAttribute("msg","結果為"+res);
return "test";
}
}

再次開啟Tomcat,并設定a=1,b=3:

/add/1/3傳遞參數

怎么讓Spring Rest接口中路徑參數可選

這就是restful風格傳參

也可以通過變相的組合注解實現:

  • @PostMapping

  • @GetMapping

  • @PutMapping

  • @DeleteMapping

  • @PatchMapping

看完了這篇文章,相信你對“怎么讓Spring Rest 接口中路徑參數可選”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

阳春市| 得荣县| 彭泽县| 大新县| 革吉县| 临高县| 共和县| 信阳市| 确山县| 荣昌县| 潜山县| 章丘市| 深水埗区| 祁东县| 三门县| 宝鸡市| 绍兴市| 柳林县| 成都市| 吉林省| 全州县| 富宁县| 深州市| 井陉县| 连城县| 桑植县| 思南县| 普定县| 昭平县| 蒲城县| 平罗县| 图木舒克市| 遵化市| 陵水| 夏邑县| 贺州市| 闵行区| 吴忠市| 张掖市| 连平县| 高淳县|