Web API调用get方法与不同的url参数
本文关键字:url 参数 API 调用 get 方法 Web | 更新日期: 2023-09-27 18:12:43
我有一组实现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(
)方法被称为"测试"参数映射没有找到。
您可能正在寻找这样的内容
[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端点时,您的REST api调用将看起来像
GET api/items检索所有项目
GET api/items/names/john按名称检索,如果未提供参数,则返回错误
GET api/items/updated/test检索更新,如果没有提供参数,返回错误