HTML链接不是有效的文件夹......但它仍然有效?

时间:2013-02-06 10:57:53

标签: c# asp.net asp.net-web-api

我在理解一些HTML时遇到了一些麻烦,并且希望SO能够帮助我弄清楚发生了什么,以便我将来能够自己做到这一点。

标记很简单:

<p>
  GET <a href="~/api/function">/api/function</a>: returns list of info from database.
</p>

现在,这完全有效,我正在努力了解发生了什么。我的理解是,这将转到根目录,找到一个名为api的文件夹,找到一个名为function的函数并运行它。

问题是没有名为api的文件夹 - 所以可能会发生什么?我可以找到实际被调用的C#函数来从数据库中检索项目,但我无法弄清楚调用它的代码是如何构造的。我有一个扩展DbContext来检索信息的类,但是当我插入一个断点时,我看不出它是如何被调用的,并且它不在调用堆栈中。

任何人都可以向我提供一些有关我如何对此有所了解的信息吗?

(对于非常一般性的问题道歉,当我开始了解实际情况时,我将提供更多细节!)

2 个答案:

答案 0 :(得分:2)

实际上不需要api文件夹。它可以是配置的简单路由,将某个URI方案映射到某些文件。它甚至不必是文件,它可以是类的方法。

例如,在ASP.NET Web API中,您有ApiController个类和方法。在您的情况下,该方法将被称为FunctionGetFunction或类似 路由配置包含类似的内容:

routes.MapHttpRoute("SomeRoute",
                    "api/{action}",                           
                    new { controller = "YourController", action = "Index" });

有关详细信息,请参阅the introduction to routes in ASP.NET Web API

我建议你也阅读entire series about the ASP.NET WebAPI

答案 1 :(得分:0)

"~/api/function"不一定是文件系统中的实际文件夹。它可以是您的网络服务器配置中定义的虚拟路径,例如web.xml中的tomcat