2017-03-20 45 views
0

我正在爲不同的git服務器創建webhook端點。 webhook url將在git服務器中配置,並將用於發送帶有包含有關事件元數據的主體的POST請求(例如推送完成後的提交信息)。 POST請求的內容因服務器而異:屬性和值是git提供程序特定的。REST:使用網址查詢參數和正文內容發佈端點

我想使用相同的端點url,如果有可能與查詢參數區分我正在處理的git提供程序。 我的終點會是這樣的:

/repositories/commits?type={git_provider} 
在gitlab或Atlassian的藏匿處進行配置

中的url的例子是:

/repositories/commits?type=stash 
/repositories/commits?type=gitlabs 

的問題是,POST請求體的內容將是根據類型的值不同而不同。這種方式可行嗎?或者我應該爲每種類型創建不同的端點,在這種情況下,我將擁有多個端點,每個端點根據git類型處理不同的Post的主體。

/stash/repositories/commits 
/gitlabs/repositories/commits 

使用單一端點的查詢參數

臨:

  • 尊重相同的層次結構中的另一個端點使用

缺點:

  • 根據查詢參數的值,由於屬性的命名/值,會有不同的方式來讀取請求的主體。

使用單個端點與查詢參數

臨:

  • 每個端點將簡單且,將被處理後固定體

Con:

  • 新端點的層次結構將不尊重現有端點的相同層次結構。
+1

這個問題主要是基於觀點的。問題中的所有網址建議都會起作用 - 應該如何處理取決於個人偏好或將其納入問題中未提及的現有方案中。 – Sven

+0

我將編輯問題以添加更多詳細信息 –

+0

閱讀編輯,我仍然會說這是基於意見的。你有基本的問題發送不同的POST機構到不同的URL。如果URL中的差異在'?'之前或之後並不重要 - 它是不同的。誰應該在你的問題上關心它?誰會受到這個決定的影響? – Sven

回答

1

雖然我從來沒有使用過git API,但我預計會有很多與不同的git提供者重疊的屬性。每個提供者可能使用不同的術語或命名方案,但實際數據本身是相同的。因此,我建議使用單個資源,查詢字符串區分使用哪個提供程序。

以通用方式命名您的API屬性,該方式與任何特定提供程序的綁定都不太緊密。然後,您會將API屬性名稱「翻譯」爲特定於提供者的屬性。這會隱藏API消費者的各種提供者實現,所以如果你添加一個新的提供者或改變他們,你的API不會改變。

相關問題