Language: C#
REST API prototype - Authoring a resource
routes.AddRoute<OrdersResource>("/Orders"); routes.AddRoute<OrdersResource>("/Orders/{Order}") public class OrdersResource { //dependencies can be injected public OrdersResource(IRepository<Order> orderRepository) { } public JsonResponseMessage GetOrders() {} // allows explict mapping for contentneg based on return value public XmlResponseMessage GetOrders() {} public JpegResponseMessage GetOrders() {} public HttpResponseMessage GetOrders() {} // fall through, or you can use this style for handling neg dynamically public HttpResponseMessage GetOrder(Order o, HttpRequestMessage request) {} //can mix and match strongly typed params with direct access to the request public HttpResponseMessage PostOrder(Order o) {} public HttpResponseMessage PutOrder(Order o) {} public HttpResponseMessage DeleteOrder (int orderID) {} } // iteration 2 routes.AddRoute<OrdersResource>("/Orders"); routes.AddRoute<OrderResource>("/Order/{Order}") public class OrderResource { //dependencies can be injected public OrderResource(IRepository<Order> orderRepository) { } public ResourceResponse Get(Order o, HttpRequestMessage request) {} //can mix and match strongly typed params with direct access to the request public ResourceResponse Put(Order o) {} public ResourceResponse Delete (int orderID) {} } public class OrdersResource { public OrdersResource(IRepository<Order> orderRepository) {} public ResourceResponse Get() {} // allows explict mapping for contentneg based on return value public ResourceResponse Post(Order o) {} } public class ResourceResponse { public HttpStatusCode StatusCode {get;set;} public ResponseHeaders Headers {get;set;} public object Content {get;set;} //will be formatted elsewhere }
Tags:
Description:
Illustrates an API for authoring restful resources.
- Method prefixes conventionally map to verbs
- Automatically handles contentneg by mapping against return values.
- Allows dependencies to be injectd- Can automatically map params in the uri / query string against the method signature.
- Allows direct access to the request.
- HttpResponse is very light, and can easily be tested.
- Request can easily be mocked.
- Method prefixes conventionally map to verbs
- Automatically handles contentneg by mapping against return values.
- Allows dependencies to be injectd- Can automatically map params in the uri / query string against the method signature.
- Allows direct access to the request.
- HttpResponse is very light, and can easily be tested.
- Request can easily be mocked.
Report Abuse
Subscribe
Discuss
What's new
What is it
New Snippet
Recent Snippets
My Snippets
Web Code
Search

