之前公司使用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 }
);
}
}
}