小编Rac*_*een的帖子

.Net Web API路由和帮助页面

我正在努力获取API帮助页面以显示我的所有API端点,并以我想要的样式显示它们.

这是我的路线:

config.Routes.MapHttpRoute("Orgs", "v1/Orgs/{orgId}", 
new { controller = "Orgs", orgId = RouteParameter.Optional });

config.Routes.MapHttpRoute("OrgDescendants", "v1/Orgs/{orgId}/Descendants", 
new { controller = "Orgs", action = "OrgDescendants" });
Run Code Online (Sandbox Code Playgroud)

这是我的所有控制器方法:

[HttpGet]
public IEnumerable<Org> GetAllOrgs()

[HttpGet]
public Org Get(string orgId)

[HttpGet]
[ActionName("OrgDescendants")]
public List<Org> Descendants(string orgId)

[HttpPost]
public HttpResponseMessage Post(Org org)

[HttpPut]
public HttpResponseMessage Put(string orgId, Org org)

[HttpDelete]
public void Delete(string orgId)
Run Code Online (Sandbox Code Playgroud)

以下是帮助页面显示的端点:

GET v1/Orgs
POST v1/Orgs
PUT v1/Orgs/{orgId}
DELETE v1/Orgs/{orgId}
GET v1/Orgs/{orgId}/Descendants
Run Code Online (Sandbox Code Playgroud)

如您所见,帮助页面缺少以下端点:

GET v1/Orgs/{orgId}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多不同的路由排列,我已经失去了轨道.无论我尝试什么,我总是会丢失一些端点或"错误"格式化.

例如,我最终得到:

GET v1/Orgs/{orgId}/Get
Run Code Online (Sandbox Code Playgroud)

当我想要的时候:

GET v1/Orgs/{orgId}
Run Code Online (Sandbox Code Playgroud)

或者我最终得到:

PUT …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc asp.net-web-api asp.net-web-api-routing

6
推荐指数
1
解决办法
848
查看次数