厦门网站专业建设,百色住房和城乡建设部网站,富阳建设局网站首页,上海展厅文章目录 路由与终结点#xff1a;如何规划好Web Api1. 路由1.1 路由映射1.2 路由注册方式1.3 路由约束总结: Web Api定义 路由与终结点#xff1a;如何规划好Web Api
1. 路由
1.1 路由映射
路由系统核心作用是指URL和应用程序Controller的对应关系的一种映射 这种映射的作… 文章目录 路由与终结点如何规划好Web Api1. 路由1.1 路由映射1.2 路由注册方式1.3 路由约束总结: Web Api定义 路由与终结点如何规划好Web Api
1. 路由
1.1 路由映射
路由系统核心作用是指URL和应用程序Controller的对应关系的一种映射 这种映射的作用: 1.把URL映射到对应的Controller的action上 2.根据Controller和action的名字生成URL 1.2 路由注册方式
路由模板的方式 ⇒ 传统方式可作为MVC页面的Web配置RouteAttribute方式 ⇒ 更适合Web Api
1.3 路由约束
路由约束指的是路由如何匹配
类型约束范围约束正则约束是否必选自定义IRouteConstraint
根据路由信息URL生成地址的类
LinkGeneratorIUrlHelper /// summary/// 类型约束/// /summary/// param nameid必须可以转long/param/// returns/returns[HttpGet({id:MyRouteConstraint})]public bool OrderExist(object id){return true;}/// summary/// 范围约束/// /summary/// param nameid/param/// returns/returns[HttpGet({id:max(20)})]public bool Max(long id){return true;}/// summary/// 是否必选/// /summary/// param namename/param/// returns/returns[HttpGet({name:required})]public bool Reque(string name){return true;}/// summary/// 正则约束/// /summary/// param namenumber/param/// returns/returns[HttpGet({number:regex(^\\d{{3}}$)})]public bool Bumber(string number){return true;}
// 自定义IRouteConstraint
// 自定义路由约束类
public class MyRouteConstraint : IRouteConstraint
{public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection){if (RouteDirection.IncomingRequest routeDirection){var v values[routeKey];if (long.TryParse(v.ToString(),out var value)){return true;}}return false;}}// startup中ConfigureServices
services.AddRouting(options
{options.ConstraintMap.Add(MyRouteConstraint, typeof(MyRouteConstraint));
});[HttpGet({id:MyRouteConstraint})]
public bool OrderExist([FromRoute]string id)
{return true;
}LinkGenerator生成Url
[HttpGet({id:max(20)})]
public bool Max([FromRoute] long id, [FromServices] LinkGenerator linkGenerator)
{var a linkGenerator.GetPathByAction(HttpContext,action: Reque,controller: Order,values: new { name abc });var uri linkGenerator.GetUriByAction(HttpContext,action: Reque,controller: Order,values: new { name abc });return true;}
总结: Web Api定义
Restful不是必须的约定好API的表达契约将API约束在特定目录下如/api/使用ObsoleteAttribute标记即将废弃的API