2016-05-06 38 views
0

比方說,我有一個一對多的關係,在這裏:
每個客戶有許多信用卡REST API一個一對多的關係資源的最佳實踐

而對於信用卡的API端點:
GET /客戶/ {CUSTOMER_ID} /卡/ {card_id的}
GET /客戶/ {CUSTOMER_ID} /卡
POST /客戶/ {CUSTOMER_ID} /卡
PATCH /客戶/ {CUSTOMER_ID} /卡/ {} card_id的
DELETE /客戶/ {CUSTOMER_ID} /卡/ {} card_id的

5方法卡相關的操作:
1.獲取的卡客戶
2.獲取客戶
3的所有卡爲客戶創建一個卡
4.更新「卡」客戶的細節
5.刪除客戶

我的API架構分層的卡使用controller - > service - > repository
有:
CustomersController,CustomersService,CustomersRepository,CardsService,CardsRepository。

我的問題是,我應該在哪裏將每個方法進行卡相關操作以及控制器&服務&庫層之間的關係應該如何?

目前我認爲這樣:
CustomersController有一個CustomersService和CardsService。 CardsService有一個CustomersRepository和CardsRepository(像往常一樣通過構造函數注入)。以上所有5種方法都在CardsService中。 CardsService中CustomersRepository的目的是從我的數據庫中檢索條帶客戶ID,這樣我就可以在條帶上執行相同的操作。

根據最佳實踐,此方法是否正確?或者我應該將5個方法放在CustomersService中,因此根本不使用CardsService?

什麼是最好的解決方案呢?

附加信息:
- 我使用PHP和Laravel框架,條紋作爲支付平臺

回答

0

按照公佈的REST API,我相信沒有客戶就不能存在卡。因此,其餘資源應該被命名爲CustomersResource以及上述其餘所有api都應該存在於此類中。

該課程將同時有CustomerServiceCardService實例注入。

您需要做的下一個更改是刪除CardService中的CustomerRepository依賴關係,因爲它打破了單一責任原則

簡而言之,客戶服務應該處理客戶相關的操作,卡服務應該處理卡相關的操作。不要混合這些。

如果您需要使用其卡片信息構建客戶對象,請從剩餘資源編排客戶服務和卡服務的呼叫,並將其發回給用戶。

希望它有幫助。