私はBREAD1とVerb - Entityを次のスタイルで使用しています。
名前空間は「エンティティ」であり、次のようになります。
- BrowserEntities
- BrowserEntitiesResponse
- BrowserEntitiesService
- AddEntity
- AddEntityResponse
- AddEntityService
フォームは実際には[動詞][エンティティ][役割]であることに注意してください。
動詞:参照、読み取り、編集、追加、削除(BREAD)、検証、抽出(他の操作など)
エンティティ:これは、影響を受ける/取得されるエンティティの通常の数に応じて、複数形または単数形になります。(DeleteEntityのようなサービスが一度に複数のエンティティを削除する可能性があることを完全に軽視しているわけではありませんが、「単一の」名前のDTO /サービスに入れる場合は慎重に検討する必要があります。常に複数のDeleteEntitiesに従うことができます。)
役割:(なし)=要求DTO、応答=応答DTO、サービス=サービス。
名前空間:常に複数形。これにより、Entity(単数)などのDALクラスとの競合が回避されます。
BREADバインディングの場合(エンドポイントは常に複数形であり、コレクションを表します):
- / entity GET-BrowseEntities
- / entity / IdGET-ReadEntitiy
- / entity / Id POST-EditEntity(PUTでは販売されていません。PATCHサポートを調べていません)
- / entity POST-AddEntitity
- / entity / IdDELETE-DeleteEntity
その他 拘束力のあるガイドライン:
- / entity / Id / verb POST / GET-VerbEntity(つまり、ValidateEntity)、べき等の場合にのみGETします。
- / entity / _ / verb POST / GET-VerbEntitiyは、リソースが識別されていない任意の(ただし特定の)エンティティに適用されます。これはまれですが、まだ保存されていないエンティティの検証などの場合に使用されます。それ以外の場合はパターンの一貫性を保つことができます。
- / entity / verb POST / GET-VerbEntitiesはコレクションに適用されますが、特定のリソースには適用されません。
- / entity / Id / items/..-指定されたIDを持つエンティティに関連する子/関連エンドポイント。前に説明したのと同じパターンに従います。
1残念ながら、BREADはフリンジ用語のようです。CRUDウィキペディアの記事から:
CRUDのもう1つのバリエーションは、「参照、読み取り、編集、追加、削除」の頭字語であるBREADです。
私はそれがどのように聞こえるか、そしてそれが別個のブラウズアクションを持っていることを好みます。