亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

REST - 下載用戶列表

REST - 下載用戶列表

慕容3067478 2021-10-28 10:00:57
語境:我想編寫一個端點,它將Collection根據用戶名返回一個用戶。這些用戶名應該如何傳遞到 REST 端點 -請注意,我可以(可能)有很多用戶名(比如 > 5000)?解決方案#1:使用GET端點,連接客戶端的用戶名并將它們作為單個請求參數傳遞。在服務器端拆分請求參數以獲取用戶名列表。@RestControllerpublic class UserController {     @GetMapping    // able to deserialize `filename1,filename2` to List out of the box    public Collection<User> getUser(@RequestParam List<String> usernames) {        return userService.getUsersByUsername(usernames);    }}解決方案#2:使用POST端點并將用戶名列表作為請求正文傳遞。雖然從編碼的角度來看更清晰,但我最終使用 aPOST來獲取數據。@RestControllerpublic class UserController {     @PostMapping    public Collection<User> getUser(@RequestBody List<String> usernames) {        return userService.getUsersByUsername(usernames);    }}問題:這兩種解決方案中的哪一種是更好的方法?您是否有更好的方法將用戶名列表傳遞到端點?編輯:我已經根據答案中的建議更新了第一個解決方案的簽名。春天是能夠反序列化filename1,filename2,列出對框@RequestParam。
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

POST 在這種情況下看起來更干凈,因為 -

  1. 在 URL 中發送一個巨大的字符串不是一個好主意,并且存在錯誤的余地

  2. 您需要編寫額外的代碼(邏輯)來在前端創建字符串并在后端拆分它。

  3. 在 URL 中發送一個巨大的字符串是不可擴展的,因為 URL 的長度是有限制的。


查看完整回答
反對 回復 2021-10-28
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

我同意上面給出的所有答案。我想再指定一點,如果您要發布請求,則可能必須增加服務器可以接收的有效負載容量,spring boot 的默認發布容量(最大字節數)為 2mb(基于您的服務器) )。雖然測試您的代碼可能適用于 1000-2000 個用戶名,但請確保更改該屬性以接受請求中的更多字節。


查看完整回答
反對 回復 2021-10-28
  • 3 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號