Herausforderung:
Es ist wichtig, eine API zu entwerfen, die Kommentare unterstützt, die mit mehreren Datentypen verknüpft sind (z. B. Ereignisse, Orte, Dinge). Die Herausforderung besteht darin, ein Gleichgewicht zwischen logischen URLs und dem Abrufen übergeordneter Objekte (z. B. Ereignisse) in GET-Anfragen zu finden.
Empfohlene Methode:
ServiceStack bietet flexible Service-Implementierung und benutzerdefinierte Routing-Funktionen, die dieses Problem effektiv lösen können:
Gruppieren Sie Ressourcen hierarchisch mithilfe übergeordneter Pfade, um Kontext bereitzustellen:
<code>/events //所有事件 /events/1 //事件 #1 /events/1/reviews //事件 #1 的评论</code>
Definieren Sie jeden Vorgang als eindeutige Nachricht im Dienst:
<code>[Route("/events", "GET")] public class SearchEvents : IReturn<SearchEventsResponse> {} [Route("/events/{Id}", "GET")] public class GetEvent : IReturn<Event> {}</code>
Um die Robustheit zu verbessern, wird empfohlen, die Operationen UpdateEvent
und CreateEvent
in verschiedene Nachrichten zu unterteilen:
<code>[Route("/events/{Id}", "PUT")] public class UpdateEvent : IReturn<Event> {} [Route("/events", "POST")] public class CreateEvent : IReturn<Event> {}</code>
Wenden Sie dieselbe Methode auf EventReviews
an:
<code>[Route("/events/{EventId}/reviews", "GET")] public class GetEventReviews : IReturn<GetEventReviewsResponse> {} [Route("/events/{EventId}/reviews/{Id}", "GET")] public class GetEventReview : IReturn<EventReview> {}</code>
Bei großen Projekten empfiehlt es sich, eine klare Projektstruktur einzuhalten:
Das obige ist der detaillierte Inhalt vonWie entwerfe ich eine ServiceStack-API zum Abrufen verknüpfter Objekte mit effizienten URL-Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!