Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using asp webapi to post a nested resource

I am using mvc webapi to create a REST API and struggling to find an example dealing with POSTs to nested resources.

Basically, I want to POST a comment to a blog post using a URL like:

~/posts/2/comments

I would also like to be able to send DELETE and PUTs to the following

~/posts/2/comments/5

What should my route registration look like, and what should my method signature on my PostsController look like?

Thanks!

like image 605
Paul Avatar asked Jun 21 '12 19:06

Paul


1 Answers

For nested resources I would suggest that you create very specific routes for the controllers/actions that you want to access.

routes.MapHttpRoute(
    name: "Posts Routes",
    routeTemplate: "api/posts/{postId}/comments/{commentID}",
    defaults: new { controller = "Posts", action="CommentsForPosts" }
);

public HttpResponseMessage CommentsForPosts(int postId, int commentID) {
    //go to work
}

There's no convention in the framework for nested resources but routing gives you the flexibility to map your controllers, methods, and URIs however you see fit

like image 60
cecilphillip Avatar answered Nov 03 '22 02:11

cecilphillip