WebAPI 控制器 GetAll 或 Get some Id
WebAPI Controller GetAll or Get some Id
我有这样的控制器
[Route("api/Foo/MyController/{id}")]
public IHttpActionResult Get(int id)
{
//Code code
foo(id); // Foo accept Int or Null
}
这确实有效,如果调用 api/Foo/MyController/1,但我需要调用 api/Foo/MyController 喜欢它 "GetAll" 参数id现在为null,controller里的东西return全部,怎么去?
您可以添加新方法和路由:
[Route("api/Foo/MyController")]
public IHttpActionResult Get()
{
//Code code
}
编辑:要重用您可以使用可选参数的相同方法:
[Route("api/Foo/MyController/{id}")]
public IHttpActionResult Get(int? id)
{
if (id.HasValue)
{
// get by id
}
else
{
// get all
}
}
你也可以做一个可选参数:
[Route("api/Foo/MyController/{id}")]
public IHttpActionResult Get(int? id = null)
{
IQueryable foo = GetData();
if (id.HasValue)
{
foo = foo.Where(e => e.Id == id.Value);
}
//...
}
为什么没有 2 个单独的方法:
[Route("api/Foo/")]
public IHttpActionResult GetAll()
{
// code
}
[Route("api/Foo/{id}")]
public IHttpActionResult GetById(int id)
{
// code
}
为了清楚起见(可读性、可维护性、可支持性)。
我有这样的控制器
[Route("api/Foo/MyController/{id}")]
public IHttpActionResult Get(int id)
{
//Code code
foo(id); // Foo accept Int or Null
}
这确实有效,如果调用 api/Foo/MyController/1,但我需要调用 api/Foo/MyController 喜欢它 "GetAll" 参数id现在为null,controller里的东西return全部,怎么去?
您可以添加新方法和路由:
[Route("api/Foo/MyController")]
public IHttpActionResult Get()
{
//Code code
}
编辑:要重用您可以使用可选参数的相同方法:
[Route("api/Foo/MyController/{id}")]
public IHttpActionResult Get(int? id)
{
if (id.HasValue)
{
// get by id
}
else
{
// get all
}
}
你也可以做一个可选参数:
[Route("api/Foo/MyController/{id}")]
public IHttpActionResult Get(int? id = null)
{
IQueryable foo = GetData();
if (id.HasValue)
{
foo = foo.Where(e => e.Id == id.Value);
}
//...
}
为什么没有 2 个单独的方法:
[Route("api/Foo/")]
public IHttpActionResult GetAll()
{
// code
}
[Route("api/Foo/{id}")]
public IHttpActionResult GetById(int id)
{
// code
}
为了清楚起见(可读性、可维护性、可支持性)。