我是Web API的新手。我已经使用不推荐使用的Web服务实现了一些Web服务方法[.asmx] - 使用了Attributes [WebMethod],并且能够将我所有不同的方法放在.asmx文件中,并且能够通过我的ajax调用中的web方法名称来调用它们。 / p>
我正在尝试将其移至WebAPI,我没有看到我可以在WebAPI中使用不同的方法。
例如,在我的WebService.asmx文件中,我可以声明:
[WebMethod]
public void LoadReport()
{
...
}
[WebMethod]
public void LoadReport2()
{
...
}
但在WebAPI中,我可以利用的是Get(),Put(),Post()和Delete()。
如何在Web API中声明这两种不同的方法?
答案 0 :(得分:3)
在web api中使用属性路由。
例如:
[RoutePrefix("api/Data")]
public class DataController : ApiController
{
[Route("LoadReport")]
[HttpGet]
public HttpResponseMessage LoadReport()
{
...
}
[Route("LoadReport2")]
[HttpGet]
public HttpResponseMessage LoadReport2()
{
...
}
您可以通过调用
来访问这些方法http://localhost:<port>/api/sample/LoadReport
http://localhost:<port>/api/sample/LoadReport2
如果使用.Net 4.5.2,请确保已启用“属性路由”。
在App_Start \ WebAPiConfig.cs文件的Register
方法下添加以下行:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes(); //enable Attribute routing
答案 1 :(得分:0)
在WebApiConfig.cs中:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
并在我的控制器中:
namespace WebAPIa.Controllers
{
// [Route("api/[controller]")]
public class DataController : ApiController
{
[ActionName("LoadReport")]
[HttpGet]
public HttpResponseMessage LoadReport()
{
return Request.CreateResponse("Testing LoadReport");
}
[ActionName("LoadReport2")]
[HttpGet]
public HttpResponseMessage LoadReport2()
{
return Request.CreateResponse("Testing LoadReport2");
}
}
}