我有api配置和问题的问题Api控制器。我实现了很多方法,但它不起作用。问题是:
我的Api控制器:
public class HomeValuesController : ApiController
{
public string GetFindID()
{
string NewID = "";
CarrierDao DaoObj = new CarrierDao();
NewID = DaoObj.FindID();
return NewID;
}
public int Test()
{
int i = 10;
return i;
}
}
在这里,我必须采用方法。
和我的Api配置文件:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "Get" }
);
现在,当我使用网址
时http://websitedom.com/api/HomeValues/test
它将采用 GetFindID 方法而不是测试。
我也在互联网上搜索了一些但没有工作。请告诉我我在做什么错误。
答案 0 :(得分:0)
您正在应用的概念是错误的。 API控制器映射到HTTP谓词而不是方法名称。这与MVC略有不同。
您可以在发出请求时使用任何类型的动词,例如GET,POST,PUSH等,实际上这取决于请求。然后路由逻辑将选择具有该动词作为前缀的方法。它不会像你认为的那样匹配行动的名称。
修改强>
如果您正在寻找使用API方法的自定义名称,那么您可以使用属性路由。 有关详细信息,请查看此http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2。请注意,WebAPI 2或更高版本中不提供属性路由。
回答你的问题:
[Route("api/home/test")]
public int Test()
{
int i = 10;
return i;
}