2011-06-14 62 views
27

有人應該使用URL的路徑參數與使用查詢參數的時間有關的規則嗎?何時使用pathParams或QueryParams

說我得到了與該領域的公司(PK),InvoiceNo(PK),Invoiceline,invoiceValue,noOfLines表發票,營業員

我現在的想法是,你的網址應該是沿着

/Invoice/ 

這將顯示所有發票

/Invoice/{company} 

這將顯示該公司的所有發票。

/Invoice/{company}/{InvoiceNo} 

顯示特定發票和

/Invoice/{company}/{InvoiceNo}?invoiceLineNo=23 

只顯示23行

我想的方式是主鍵字段應該是路徑的一部分和任何其他字段你會過濾是查詢參數的一部分。

這聽起來像是區分兩者的合理方式嗎?

+0

另請參閱:http://stackoverflow.com/q/11552248/1725096 – 2015-04-27 09:04:51

回答

44

我個人的經驗法則是PathParam導致您請求的實體類型。

/Invoices    // all invoices 
/Invoices?after=2011 // a filter on all invoices 

/Invoices/52   // by 52 
/Invoices/52/Items // all items on invoice 52 
/Invoices/52/Items/1 // Item 1 from invoice 52 

/Companies/{company}/Invoices?sort=Date 
/Companies/{company}/Invoices/{invoiceNo} // assuming that the invoice only unq by company? 

引述Mr Rowe路徑參數對數據進行分組,查詢參數進行過濾

+3

+1表示可以使用查詢參數進行過濾。 – Qwerky 2011-06-14 15:18:47

+9

+1分組數據的路徑參數,用於過濾的查詢參數 – 2011-06-14 16:08:02

+0

@Gary很好的總結 – 2011-06-15 08:06:59

6

只需添加到加雷思的答案,可選的參數也更容易把作爲查詢參數。通常這是你的服務器框架的約束,決定哪個是最好的選擇。對於參數是查詢參數還是路徑參數,嘗試推斷太多的語義意義並不明智。請記住,URI對客戶端來說是不透明的。