我正在尝试在我的服务器上为JS插件开发REST API,如http://docs.annotatorjs.org/en/v1.2.x/storage.html中所述。我需要开发的两个API如下:
索引:索引功能,路径为/annotations
,方法为get
。我在控制器注释(放在名为api的目录中)中实现了这个,如下所示:
[HTTPGET]
public IList annotations(long userID = 2)
搜索:搜索功能,路径为/search
,方法为get
。我在同一个控制器中的实现如下:
[HTTPGET] public AnnotationSearchResults search(int count,string uri)
我面临的问题是,如果同时使用以下网址:http://localhost:5555/api/Annotation/search?limit=20&uri=www.abc.com
和http://localhost:5555/api/Annotation/annotations
,方法annotation
会被调用,但我希望调用搜索方法。我非常喜欢网络开发,并且努力让自从过去2天开始运行。如果这是一个非常基本而明显的问题,请原谅。
答案 0 :(得分:0)
在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 }
);
}
向routeTemplate添加 {action} ,如下所示,系统会点击正确的操作网址。
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}