2016-10-11 91 views
0

我是REST API的新手,現在正在爲我的項目創建端點。我的問題是?如何使用多個ID選擇創建REST API端點

創建多記錄端點的正確方法是什麼?而不是做這個

/users/:id 

我要選擇多個用戶像在SQL

"where users.id in [ ]" 

是不是正確的方法創建一個端點:

/users?user_id=1,2,3 

,用戶選擇ID爲1 ,2和3?

回答

1

您可以在您的代碼中有一個列表,以從查詢帕爾馬中獲取用戶標識列表。

端點看起來像 /用戶?ID = 1個& ID = 2 ...

在Java中,你可以趕上查詢參數如下。

@QueryParam( 「ID」)列出<整數> IDS

+0

後續問題:將此URL作爲端點是否有誤?/users?user_id = 1,2,3 –

+1

定義終點沒有正確或錯誤。但我看到的是,您需要驗證用戶標識列表。根據您的要求,您可以直接將查詢參數中的值傳遞給sql where子句。但是,如果您對輸入做了其他處理,理想情況下您希望在List數據結構中具有輸入。如果你有你提到的端點,那麼你必須提取字符串,然後創建列表。取而代之,您可以直接在列表中使用明確定義的API。 –

1

如果有一個HTML形式,它允許多個選擇,如下面的例子中,瀏覽器作爲Rolson Quadra時提到的(/search?q=volvo&q=opel)執行GET請求。

<form action="/search" method="GET"> 
    <select multiple name="q"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="opel">Opel</option> 
    <option value="audi">Audi</option> 
    </select> 
    <button type="submit">Search</button> 
</form> 

現在,服務器實現需要了解發送的內容。 Rails,例如也理解/search?q[]=volvo&q[]=opel(注意用於表示數組的方括號)。

1

除了查詢參數,您還可以使用matrix parameters。矩陣參數具有明顯屬於URL特定部分的優點。考慮以下幾點:

/users;id=1,2,3/messages 

這將返回屬於用戶1,2和3

與查詢參數就應該是這樣的郵件列表:

/users/messages?users=1,2,3 

這工程,但它很奇怪。查詢參數不會傳達它們所屬URL的哪一部分。

缺點是對矩陣參數的框架支持是變化的。有些支持他們,有些則不支持。

我最喜歡矩陣參數在這裏,但查詢參數也OK。

對於類似列表的參數,有兩種指定方式:您可以重複參數名稱或用逗號分隔不同的值。兩者都是可能的,一些框架更喜歡那個框架,一些框架更喜歡另一個框架。矩陣和查詢參數都是如此。