簡體   English   中英

關於一個休息端點和兩個消費者的一般想法

[英]General thoughts about one Rest Endpoint and two Consumers

請考慮以下情況:

  • 您有一個端點,例如../api/Samples
  • 所有樣本均具有以下屬性:名稱,應用程序。
  • 您有兩個應用程序將消耗樣本端點
  • 第一個應用程序(A1)需要所有樣本。
  • 第二個應用程序(A2)僅需要樣本的子集。 確切地說,只有在“應用”屬性中具有“ A2”的樣本。

實現這一目標的最符合REST和常識的方法是什么?

到目前為止,我想到了三種方法:

  • 創建兩個端點:../api/A1Samples和../api/A2Samples

    這似乎是開銷。 如果以后會有更多應用程序怎么辦? 即使大多數代碼相同,也必須復制控制器。

  • 在以下網址內發送應用類型:../ api / Samples / A1或A2

    如果以后有更多的應用程序出現,將更易於維護。 但這難道不是拒絕REST的想法嗎?

  • 在“接受”標題:../ api / Samples和“標題”:App-Type:A1或A2中發送應用程序類型

    就我而言,這似乎很難在ASP.NET Core v1.1中實現,但應該是語法上最正確的方法。

有人可以批准或拒絕我的想法嗎? 甚至可以擴展此列表或說明這種情況下的常用解決方案?

如果其中一個應用程序需要所有樣本,則可以直接使用/ api / Samples; 對於另一個,有一種可擴展的方式來指定過濾器(即使那只是幾個GET參數)-如果這確實是Sample對象上存在的“ App”屬性,那么?App=A2將是有意義的是其他一些屬性,然后直接指定這些屬性。

這比您的/Samples/A1/Samples/A2想法更具有REST功能,因為它直接指定要查詢的屬性(A1不使用?App=A1因為正如您所說的,應用程序1占用了整個示例對象列表)而不是知道哪個應用程序正在查詢它,任何相似之處都只是由於該示例的結構(我懷疑是人為的)。

REST不僅像“在所有情況下都使用路徑參數”一樣簡單-過濾結果列表是使用查詢參數的明顯案例。

暫無
暫無

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

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