我有一套实现get接口的要求:
- api/Item
- api/Item?name=test
- api/Item?updated=2016-10-12
- etc
我已将方法定义为:
- get() //returns all items
- getName([FromUri] string name)
- getUpdated([FromUri] string updated)
我的问题是 - 如果参数不存在(假设调用是api/Item?test=test
),则调用get(
)方法,因为找不到“test”参数映射。
在这种情况下,我需要返回错误响应。有没有其他正确的方法从URL读取参数以满足接口要求?
答案 0 :(得分:2)
您可能正在寻找类似的东西
[RoutePrefix("api/items")]
public class ItemsController : ApiController
{
public IHttpActionResult Get()
{
return Ok(new List<string> { "some results collection" });
}
[Route("names")]
public IHttpActionResult GetByName([FromUri]string name = null)
{
if (string.IsNullOrWhiteSpace(name))
{
return BadRequest("name is empty");
}
return Ok("some result");
}
[Route("updates")]
public IHttpActionResult GetUpdates([FromUri]string updated = null)
{
if (string.IsNullOrWhiteSpace(updated))
{
return BadRequest("updated is empty");
}
return Ok("some result");
}
}
当您调用这些REST端点时,您的调用将类似于
获取 api / items 以检索所有项目
获取 api / items / names / john 以按名称检索,如果未提供参数,则返回错误
获取 api / items / updated / test 以检索更新,如果未提供参数,则返回错误