チャレンジ:
複数のデータ型 (イベント、場所、物など) に関連付けられたコメントをサポートする API を設計することが重要です。課題は、論理 URL と GET リクエストでの親オブジェクト (イベントなど) の取得とのバランスを取ることです。
推奨方法:
ServiceStack は、この問題を効果的に解決できる柔軟なサービス実装とカスタム ルーティング機能を提供します。
親パスを使用してリソースを階層的にグループ化し、コンテキストを提供します:
<code>/events //所有事件 /events/1 //事件 #1 /events/1/reviews //事件 #1 的评论</code>
各操作をサービス内の一意のメッセージとして定義します:
<code>[Route("/events", "GET")] public class SearchEvents : IReturn<SearchEventsResponse> {} [Route("/events/{Id}", "GET")] public class GetEvent : IReturn<Event> {}</code>
堅牢性を向上させるために、UpdateEvent
操作と CreateEvent
操作を異なるメッセージに分けることをお勧めします。
<code>[Route("/events/{Id}", "PUT")] public class UpdateEvent : IReturn<Event> {} [Route("/events", "POST")] public class CreateEvent : IReturn<Event> {}</code>
同じメソッドを EventReviews
に適用します:
<code>[Route("/events/{EventId}/reviews", "GET")] public class GetEventReviews : IReturn<GetEventReviewsResponse> {} [Route("/events/{EventId}/reviews/{Id}", "GET")] public class GetEventReview : IReturn<EventReview> {}</code>
大規模なプロジェクトの場合は、明確なプロジェクト構造を維持することをお勧めします。
以上が効率的な URL 構造でリンクされたオブジェクトを取得するための ServiceStack API を設計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。