簡體   English   中英

如何使用可選參數創建 REST API?

[英]How to create REST API with optional parameters?

我需要使用這些路徑參數來實現一個 API。

@Path("/job/{param1}/{optional1}/{optional2}/{param2}")

第二個和第三個參數可以選擇嗎? 所以客戶端不需要通過這些,但必須通過第一個和最后一個。

如果這是不可能的,那么是否建議以這種方式重新排列參數?

@Path("/job/{param1}/{param2}/{optional1}/{optional2}")

如何提供可選參數?

將可選路徑參數轉換為查詢參數可能更容易。 如果需要,您可以使用@DefaultValue

@GET @Path("/job/{param1}/{param2}")
public Response method(@PathParam("param1") String param1,
    @PathParam("param2") String param2,
    @QueryParam("optional1") String optional1,
    @QueryParam("optional2") @DefaultValue("default") String optional2) {
  ...
}

然后,您可以使用/job/one/two?optional1=test僅傳遞您需要的可選參數來調用它。

您可以匹配以 REST 請求結尾的整個路徑

@Path("/location/{locationId}{path:.*}")
public Response getLocation(
    @PathParam("locationId") int locationId,
    @PathParam("path") String path) {
    //your code
}

現在路徑變量包含location/{locationId}之后的整個路徑

您還可以使用正則表達式使路徑可選。

@Path("/user/{id}{format:(/format/[^/]+?)?}{encoding:(/encoding/[^/]+?)?}")
public Response getUser(
    @PathParam("id") int id,
    @PathParam("format") String format,
    @PathParam("encoding") String encoding) {
    //your code
}

現在,如果您格式化和編碼將是可選的。 你不給任何值它們就會是空的。

重新排列參數並嘗試以下操作:

@Path("/job/{param1}/{param2}{optional1 : (/optional1)?}{optional2 : (/optional2)?}")
public Response myMethod(@PathParam("param1") String param1,
                         @PathParam("param2") String param2,
                         @PathParam("optional1") String optional1,
                         @PathParam("optional2") String optional2) {
    ...
}

在控制器類中使請求參數可選設置@requestparam fasle

(@RequestParam(required=false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM