How to Route non-CRUD actions in a RESTful ASP.NET Web API?

前端 未结 3 1633
自闭症患者
自闭症患者 2020-12-20 12:11

I am trying to design a RESTful web API for our service using ASP.NET Web API. I\'m running into trouble with figuring out how to route non-CRUD actions to the proper contr

3条回答
  •  天涯浪人
    2020-12-20 12:46

    From RESTful principle, maybe it's best to introduce a 'status' property to manage those non-CURD actions. But I don't think it meets the real production development.

    Every answer to this kind of question, looks like you must have to use a work-around to enforce your API design meets RESTful. But my concern is, is that really making convenience to both user and developer?

    let's take a look on the API3.0 design of Google bloger: https://developers.google.com/blogger/docs/3.0/reference, it's using lot URL for non-CURD actions.

    And this is interesting,

    POST  /blogs/blogId/posts/postId/comments/commentId/spam
    

    and the description is

    Marks a comment as spam. This will set the status of the comment to spam, and hide it in the default comment rendering.

    You can see, a comment has a status to indicate whether it's a spam or not, but it was not designed like the answer mentioned above by JoannaTurban.

    I think from user point of view, it's more convenient. Don't need to care the structure and the enum value of the "status". And actually you can put lot of attributes into the definition of "status", like "isItSpam", "isItReplied", "isItPublic" etc. The design will becomes unfriendly if the status has many things.

    On some business logic requirement, to use an easy to understand verb, instead of trying to make it completely a "real" RESTful, it's more productive, for both user and developer. This is my opinion.

提交回复
热议问题