Skip to main content
 首页 » 编程设计

c#之ASP.net WebAPI Controller 目录/路由

2024年01月28日31mfrbuaa

我正在尝试做一些类似于本网站建议的事情 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") }; 
    } 
}