簡體   English   中英

REST API設計:如何設計api以阻止不同類型的通信?

[英]Rest api design: how to design api to block different type of communication?

我們有一個電子商務網站,用戶可以在此注冊。 為了避免垃圾郵件,我們希望創建API以阻止某些手機號碼,IP,IMEI。 我們對兩種API設計感到困惑:

  1. 創建API來阻止這些通信,即單個API能夠阻止IP / Mobile / IMEI

    POST / api / blockcommunication /

    在POST請求主體中,它接收具有以下信息的對象數組:

    即類型:哪種阻止類型是數字1,IP 2,IMEI 3

    AND值:即,如果type為1,則期望為數字。 如果類型為2,則需要IP。 如果type為3,則期望IMEI。

  2. 創建單獨的API,即POST / api / blockmobile,POST / api / blockip /。 這些API在其請求正文中分別包含移動設備和IP的數組。

方法1的優點是,我們具有阻止任何內容的中央API,並且可以將其擴展為進一步阻止電子郵件,whatsapp-communication等。但這會隨着添加更多請求字段而變得更加復雜。 Approach2可能沒有阻止通訊的中心點,但看起來很簡潔。

這2個中哪個更好,還是有其他任何一種設計此類api的方法?

我想說第一種方法將具有更大的可擴展性,但有成為巨大的整體決策塊的風險。 中央API可以從數據中算出類型嗎? 即可以算出它是IP,移動還是IMEI? 如果是這樣,則不發送類型,僅發送數據並讓中央API決定如何處理它。 這樣,您可以添加更多類型,而無需阻止這些事情的客戶端知道新類型,而只是發送數據。

然后,您可以將兩種API方法結合起來進行擴展。 一旦確定了類型,中央API然后將其發送到/ api / blockmobile等。

因此,客戶只需說“我不想再看到這個”,中央API就會確定它是什么類型,然后發送給該類型阻止API

我認為諸如/api/blocked-clients類的終結點可以解決問題。

對必須阻止的客戶端表示執行POST請求。 據我了解,您可以發送typevalue屬性:

POST /api/blocked-clients
Host: example.org
Content-Type: application/json

{
  "type": "ip",
  "value": "0.0.0.0"
}

如果操作成功,則響應應包含201狀態代碼和帶有URI的Location標頭,該URI標識新創建的資源,例如/api/blocked-clients/{id} (其中{id}是唯一標識符)。

您還可以在/api/blocked-clients端點中支持GET操作,因此可以獲得所有已被阻止的客戶端的表示。 響應將類似於:

[
  {
    "id": "1",
    "type": "ip",
    "value": "0.0.0.0"
  },
  {
    "id": "2",
    "type": "imei",
    "value": "000000000000"
  }
]

您還可以在/api/blocked-clients/{id}端點中支持DELETE操作。

暫無
暫無

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

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