URI template for POST/PUT restful service
api, c#-4.0, rest, wcf
Solution
You have to map the URIs as below for `Transaction`.
Get a transaction by ID - GET - transaction/id
Create a new transaction - POST - transaction
Update a transaction - PUT - transaction/id
Delete a transaction - DELETE - transaction/id
Your URI templates has to be changed as below
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/Transaction", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public Transaction AddTransaction(Transaction transaction)
{
//
}
[OperationContract]
[WebInvoke(Method = "PUT", UriTemplate = "/Transaction/{id}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public Transaction UpdateTransaction(int id, Transaction transaction)
{
//
}
how client will access these methods for Post and Put with unique URI
You don't need unique URI for POST and PUT. There URIs can be same.
References: http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations
http://msdn.microsoft.com/en-us/library/bb412172(v=vs.90).aspx
Problem
I am going to write a restful API, my requirement is to call methods on “Transaction” object, I was wondering how I should call Post/PUT with appropriate URI template so that I can Create/update the Transaction resource without using “verbs” in Uri mapping. ``` [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/Transaction/{**What to write here ????**}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public Transaction AddTransaction(Transaction transaction) { return AddTransactionToRepository(transaction); } [OperationContract] [WebInvoke(Method = "PUT", UriTemplate = "/Transaction/{**What to write here ????**}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public Transaction UpdateTransaction(Transaction transaction) { return UpdateTransactionInRepository(transaction); } ``` Please consider that I want to apply best practice for uri mapping and do not want “verbs” in it, only “nouns”. Also tell me how client will access these methods for Post and Put with unique URI. Thanks