簡體   English   中英

如何在 spring-mvc 中為 REST 查詢提供對象列表?

[英]How to provide a list of objects for a REST query in spring-mvc?

我想在spring-mvc中創建一個 REST-GET 控制器,它接受一個對象列表,例如 10 個 id,如下所示:

@RestController
public class MyRest {
   @RequestMapping(method = RequestMethod.GET)
   public Object test(@RequestParam value="id" required=false) List<Integer> ids) {
    Sysout(ids);
  }
}

無論如何,當我調用它時,我必須多次重復 id 參數:

localhost:8080/app?id=1&id=2&id=3&...

可以將參數更改為某種列表嗎? 例如

 app?id=1,2,3,4,5

如果是,這是可取的嗎? 從客戶的角度來看,哪個更好?

最好使用帶有JSON或XML的POST消息作為請求體。 因為你永遠不知道會傳遞多少個id。

@RestController
public class MyRest {
   @RequestMapping(method = RequestMethod.POST)
   public Object test(@RequestBody IDRequest request) {
    Sysout(ids);
  }
  public static final class IDRequest {
    List<Integer> ids;
    <!-- getter/setters--->
  }
}

請求將是某種類似的JSON或XML

{"ids":[1,2,3,4,5,6,7,8,9]}

您可以提供休息服務的對象列表作為請求參數。這是示例

@RequestMapping(value = "/animals, method = RequestMethod.GET)
   public void test(@RequestParam(value="animalsNames[]") String[] animalsNames) {
    Sysout(animalsNames);
  }

你的請求看起來像

http://localhost:8080/appname/animals?animalsNames[]=dog,horse  
HTTP Method type : GET

控制器 :

 public @ResponseBody String getInfos(HttpServletRequest request,
                @RequestParam @DateTimeFormat( @RequestParam List<Long> ids) {...}

要求 :

http://localhost:8080/test/api?ids=1,2,3

暫無
暫無

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

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