0

我在理解一些 HTML 时遇到了一些麻烦,希望 SO 可以帮助我弄清楚发生了什么,这样我将来就可以自己做这件事。

标记很简单:

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

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

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

任何人都可以给我一些关于我如何阐明这一点的信息吗?

(为这个非常笼统的问题道歉,当我开始了解实际发生的情况时,我将提供更多细节!)

4

2 回答 2

2

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

例如,在 ASP.NET Web API 中,您拥有ApiController带有方法的类。在您的情况下,该方法将被调用FunctionGetFunction类似。
路由配置将包含类似的内容:

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

有关详细信息,请参阅ASP.NET Web API 中的路由简介。

我建议您也阅读有关 ASP.NET WebAPI 的整个系列

于 2013-02-06T11:04:15.410 回答
0

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

于 2013-02-06T11:07:51.213 回答