我想要一種特殊的路由添加到默認的WebAPI樣品重疊路線:用的WebAPI
常規的有
/api/values
(檢索所有值)
/api/values/{id}
(檢索特定值(由數字ID))
現在我想添加這個API:
/api/values/special
以前的api(/api/values/{id}
)應該使用數字ID來提供所有請求,但/api/values/special
應該提供調用該特定url的請求。
到目前爲止,我得到這個路由:
而這對於實現:
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
// GET api/values/special
public IEnumerable<string> SpecialValues()
{
return new string[] { "special1", "special2" };
}
}
但它會呈現:The requested resource does not support http method 'GET'
。
如果我打電話/api/values/special
和我添加[HttpGet]
到SpecialValues
方法,將工作 但/api/values
將停止工作,說有多個匹配操作。
這導致以下消息: 該請求無效。 參數字典包含'MvcApplication1.Controllers.ValuesController'中方法'System.String Get(Int32)'的非空類型'System.Int32'的參數'id'的空項。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。 MessageDetail> 它仍然被Get方法拾取 –
Fredrik
您的WebApiConfig類應該在我的答案中更新。此外,你正在調用的網址應該像 - 'http://主機名:端口/ API /值/特殊' – siddharth
工程就像一個魅力,我錯過了與MapHttpAttributeRoutes部分。謝謝! – Fredrik