我正在尝试做一些类似于本网站建议的事情 https://mathieu.fenniak.net/stop-designing-fragile-web-apis/
提示这是一个更好的url
http://api.fbi.gov/wanted/most
我的问题是如何在 ASP.NET WEBAPI 中做类似的事情。例如,如果我想返回一个将一些数据与另一个表连接起来的特定查询,而不是传递参数,我只需要一个方法 url 调用,它只执行我想要的一个查询。完成此任务的最简单方法是什么?
示例 url 调用:
api/controller/joinresultwithtable2
请您参考如下方法:
它不是很漂亮,但您可以设置路由,以便特定路径映射到特定 Controller 和操作。
config.Routes.MapHttpRoute("query1", "query/query1", new {controller="StockQueries", action="query1"});
config.Routes.MapHttpRoute("query2", "query/query2", new { controller = "StockQueries", action = "query2" });
config.Routes.MapHttpRoute("query3", "query/query3", new { controller = "StockQueries", action = "query3" });
然后有一个看起来像这样的 Controller ,
public class StockQueriesController : ApiController
{
[ActionName("query1")]
public HttpResponseMessage GetQuery1()
{
return new HttpResponseMessage() {Content = new StringContent("Query1")};
}
[ActionName("query2")]
public HttpResponseMessage GetQuery2()
{
return new HttpResponseMessage() { Content = new StringContent("Query1") };
}
[ActionName("query3")]
public HttpResponseMessage GetQuery3()
{
return new HttpResponseMessage() { Content = new StringContent("Query1") };
}
[ActionName("query4")]
public HttpResponseMessage GetQuery4()
{
return new HttpResponseMessage() { Content = new StringContent("Query1") };
}
}
