I am creating a Web Api Controller. I want to create multiple Get function in the single Controller. See the below:
// GET api/User/5
[ResponseType(typeof(UserModel))]
public IHttpActionResult GetUser(Guid id)
{
var item = repository.Get(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return Ok(item);
}
}
// GET api/User/GetCities/5
[ResponseType(typeof(CityModel))]
public IHttpActionResult GetCities(int id)
{
var item = repository.GetCities(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return Ok(item);
}
}
Below is my WebApi Route Config
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Controllers with Actions
// To handle routes like `/api/VTRouting/route`
config.Routes.MapHttpRoute(
name: "DefaultApiwithActionID",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Below is my API Controller
// GET api/User/5
[ResponseType(typeof(UserModel))]
[Route("api/UserApi/GetUser")]
public IHttpActionResult GetUser(Guid id)
{
var item = repository.Get(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return Ok(item);
}
}
// GET api/User/5
[ResponseType(typeof(TanentDocumentsModel))]
[Route("api/UserApi/GetUserDocuments")]
public IHttpActionResult GetUserDocuments(Guid id)
{
var item = repository.GetUserDocuments(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return Ok(item);
}
}
// GET api/User/GetCities/5
[ResponseType(typeof(CityModel))]
[Route("api/UserApi/GetCities")]
public IHttpActionResult GetCities(int id)
{
var item = repository.GetCities(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return Ok(item);
}
}
// GET api/User/GetCities/5
[ResponseType(typeof(StateModel))]
[Route("api/UserApi/GetStates")]
public IHttpActionResult GetStates(int id)
{
var item = repository.GetStates(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
else
{
return Ok(item);
}
}
How can I do this, so that I can call both function through URL?
api/{controller}/{action}/{id}beforeapi/{controller}/{id}also to use attribute routing, you need thisconfig.MapHttpAttributeRoutes();