2018-02-08

项目创建

选择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);
      }

你可能感兴趣的:(2018-02-08)