之前公司使用webapi開發項目,只知道怎么用對於怎么配置一直不了解,最近這段時間沒什么事然后自己建一個webapi項目,只知道怎么用對於怎么配置一直不了解,最近這段時間沒什么事然后自己建一個webapi項目,主要有個webapiconfig.cs文件
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace RouteFirstApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服務 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }
然后建個controller
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace RouteFirstApi.Controllers { public class OrderController : ApiController { [HttpGet] public IHttpActionResult GetAll() { return Ok<string>("Success"); } } }
訪問時地址為http://localhost:80/api/Order
返回的值正常,但是一旦多建一個方式是就需要配置好多東西,如
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace RouteFirstApi.Controllers { [RoutePrefix("api/Order")] public class OrderController : ApiController { [Route("")] [HttpGet] public IHttpActionResult GetAll() { return Ok<string>("Success"); } [Route("{ id:int }")] [HttpGet] public IHttpActionResult GetById(int id) { return Ok<string>("帶id的int類型" + id); } } }
感覺很麻煩,然后就想可不可以讓這東西的訪問地址和mvc類似呢?編程http://localhost:80/api/Order/GetAll
然后通過一同實驗,發現只需要在將WebApiConfig中加入action然后這些配置就可以取消了
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace RouteFirstApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服務 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }