我正试图在我的服务器上为JS插件开发REST,如http://docs.annotatorjs.org/en/v1.2.x/storage.html所述。我需要开发的两个API如下:
/annotations
,方法为get
。我在控制器注释(放在一个名为api的目录中)中实现了这一点,如下所示:
HttpGet
公共IList注释(long userID = 2)/search
,方法作为get
再次搜索功能。我在同一个控制器中的实现如下:
HttpGet公共AnnotationSearchResults搜索(int计数,字符串uri)我面临的问题是,对于以下两个URLS:http://localhost:5555/api/Annotation/search?limit=20&uri=www.abc.com
和http://localhost:5555/api/Annotation/annotations
,方法annotation
会被调用,尽管我希望调用搜索方法。我非常热衷于网络开发,并且从过去的两天开始我一直在努力的尝试着实现这个目标。如果这是一个非常基本和明显的问题,请原谅。
发布于 2015-03-27 07:08:54
在App_Start文件夹中,有一个WebApiConfig.cs文件。默认情况下,此处的路由模板不包括操作。您需要添加操作路径以获得所需的输出。
Web API的默认路由是
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
将{ action }添加到routeTemplate中,如下所示,将命中正确的操作urls。
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
https://stackoverflow.com/questions/29303620
复制相似问题