WCF Restful service GET/POST

Can I do something like this?

[OperationContract]    
[WebInvoke
  (  
    Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare,
    UriTemplate = "/abc{integerParam}"
  )
]
ResultStruct abc( int integerParam, CustomClass secondParam );

Idea here being that I can pass first parameter( integer ) in the url, but secondParam comes from POST. Is this even possible?

I started with WCF REST and not sure about how parameters are assigned. Any pointers will be helpful thank you

Answers


Yes you can, here is from A Guide to Designing and Building RESTful Web Services

[ServiceContract]
public partial class BookmarkService
{
    [WebInvoke(Method = "PUT", UriTemplate = "users/{username}")]
    [OperationContract]
    void PutUserAccount(string username, User user) {...}

    [WebInvoke(Method = "DELETE", UriTemplate = "users/{username}")]
    [OperationContract]
    void DeleteUserAccount(string username) {...}

    [WebInvoke(Method = "POST", UriTemplate = "users/{username}/bookmarks")]
    [OperationContract]
    void PostBookmark(string username, Bookmark newValue) {...}

    [WebInvoke(Method = "PUT", UriTemplate = "users/{username}/bookmarks/{id")]
    [OperationContract]
    void PutBookmark(string username, string id, Bookmark bm) {...}

    [WebInvoke(Method = "DELETE", UriTemplate = "users/{username}/bookmarks/{id}")]
    [OperationContract]
    void DeleteBookmark(string username, string id) {...}
    ...
}

As for me, this kind of designing RESTful web services is terrible. This ServiceContrcat is:

  • unmaintainable, brittle remote interface
  • Have to create too many methods
  • Polymorphism is absent

I believe, that remote interface should be stable and flexible, we can use message based approach for designing web services.

You can find detailed explanation here: Building RESTful Message Based Web Services with WCF, code samples here: Nelibur and Nelibur nuget package here


Need Your Help

Check preconditions in Controller or Service layer

spring validation service controller

I'm using Google's Preconditions class to validate user's input data.