url中的破折号(映射到操作)

本文关键字:操作 映射 破折号 url | 更新日期: 2023-09-27 18:18:11

我尝试实现一个ASP。. NET Web Api控制器,支持JsonApi标准(http://jsonapi.org/主要由Ember.js使用)

URL可以包含破折号。但是c#代码中对应的方法名可能不包含破折号。

我的javascript试图POST到
http://localhost:50000/jsonapi/activity-exercises

但是我无法实现可以接收该请求的端点。我试过了:

[HttpPost]
public HttpResponseMessage ActivityExercises([FromBody] ActivityExerciseEntry value)
{
   // ...

理想情况下,应该有一个属性添加到方法中,以指定URL中映射的操作名称。这种属性存在吗?

我的路由映射是这样的:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapHttpRoute("EmberJsonApi", "jsonapi/{action}/{id}", new { controller = "JsonApi", id = RouteParameter.Optional });
    routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
}

url中的破折号(映射到操作)

我明白了。这需要大量的谷歌搜索,因为这不是很好的文档....

正如我所怀疑的,存在一个我可以使用的属性:[ActionName]

那么端点的定义就是这样的

[HttpPost]
[ActionName("activity-exercises")]
public HttpResponseMessage ActivityExercises([FromBody] ActivityExerciseEntry value)
{
   ...