项目创建
选择web =>ASP.NET WEB应用程序 =>模板勾选 Empty,核心应用勾选webapi 完成,目录结构如下 ClassController是我后面创建的
QQ图片20180208112646.png
ClassController的内容
public class ClassController : ApiController
{
public string Get()
{
return "get";
}
public string Post()
{
return "Post";
}
}
此时启动项目 get方式 http://localhost:54307/api/class
QQ图片20180208113143.png
如果相同地址post请求,结果如下
QQ图片20180208113327.png
貌似 ClassController 里面的方法名字已get开头 框架就默认该方法接受get请求,Post,delete 类似
如果想改变方法的请求方式 可手动指定
[HttpGet]
[HttpDelete]
public string Get()
{
return "get";
}
特性路由
刚才我们的防伪地址是 /api/Class ,这是由于WebApiConfig里的路由决定的
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
如果我们想定制我们的访问路径 ,可以在action上或者 controller上 加上特性 Route,如下代码
[RoutePrefix("api/Class")]
public class ClassController : ApiController
{
[HttpGet]
[HttpDelete]
public string Get()
{
return "get";
}
[Route("getmethod2")]
public string Post()
{
return "post";
}
[Route("{classid}/student")]
public string Get(int classID)
{
return string.Format("/api/class/{0}/student", classID);
}
}
可以通过route里的参数配置改变访问的地址
eg. http://localhost:54307/api/class/1/student 程序会匹配到该方法上
[Route("{classid}/student")]
public string Get(int classID)
{
return string.Format("/api/class/{0}/student", classID);
}