Web Api how to define 2 methods with same parameters

Viewed 3676

I'm new to Web API. Reading up on restful made me think it was based upon verbs and as such I was hoping that the logic would be as well.

If I want to create an API for Delete and Get, which have the same signature I'm told off .

[HttpGet]
public HttpResponseMessage Index(int id)
{
    return Request.CreateResponse(HttpStatusCode.OK, GetValue());
}

[HttpDelete]
public HttpResponseMessage Index(int id)
{
    //logic
    return Request.CreateResponse(HttpStatusCode.OK, true);
}

I was hoping by specifying the different verb Web Api 2 would tell. But even if I update the delete to (note the void return type)

[HttpDelete]
public void Index(int id)
{
    //logic
}

I am still told off as the member called index with the same parameter types already exist.

According to https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client it shows

Action               HTTP method    Relative URI
Get a product by ID      GET            /api/products/id
Create a new product     POST           /api/products
Update a product         PUT            /api/products/id
Delete a product         DELETE         /api/products/id

The Get, Put and Delete have the same URL. Sadly, they don't display the server side code, only the client.

Are my only options to:

1. Overload the method (in this example, seems like it would be hacking as it's not needed to perform the required task)
2. Give the method a different name (eg `Delete` instead of `Index`)

Or is there another way?

2 Answers
Related