【问题标题】:Explain the ASP.NET WebAPI HttpRoute plumbing解释 ASP.NET WebAPI HttpRoute 管道
【发布时间】:2013-09-24 11:05:01
【问题描述】:

我是一名长期服务于 ASP.NET VB 网页表单的程序员,但需要开始使用 WebAPI 来创建一个简单的服务。我遵循了http://www.asp.net 上的 PluralSight 教程,并拥有这两个 sn-ps:

HelloApiController.vb

Imports System.Web.Http

Namespace HelloWebApiDemo

    Public Class HelloApiController
        Inherits ApiController

        Public Function [Get]()
            Return "Hello from API at " & DateTime.Now.ToString
        End Function

    End Class

End Namespace

Global.asax.vb

Imports System.Web.Http
Imports System.Web.Http.Routing

Public Class Global_asax
    Inherits System.Web.HttpApplication

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        GlobalConfiguration.Configuration.Routes.Add("default", New HttpRoute("{controller}"))
    End Sub

End Class

运行时获取信息的URL为:http://localhost:63678/helloapi

谁能解释"{controller}"如何自动映射到上述URL的相关性?我在代码中的任何地方都没有看到 helloapi 这个词。如果我创建了第二个继承 ApiController 的类怎么办 - IIS 将如何区分我想要访问的类?

另外,方法名称[Get]() 是否会自动映射到相应的 HTTP 动词?再说一次,如果我想给它起一个不同的名字会怎样?

谢谢。

【问题讨论】:

    标签: asp.net asp.net-web-api asp.net-4.5 asp.net-web-api-routing


    【解决方案1】:

    Web API 的一大优点是它按约定工作。 Web API 能够通过使用映射到类名前缀的 URI 路径约定(省略 Controller)将 GET 请求路由到 HelloApiController。如果你有另一个控制器,比如FooControllerhttp://server/foo 的 URI 是访问你的第二个控制器所需要的。

    至于方法名称,它使用 HTTP 动词。默认情况下,Get 的方法名和以Get 开头的方法名如GetFoo 映射到HTTP GET 等。这可以改变。路由的概念很强大,这里无法通过一个答案来解释。我强烈推荐 Mike Wasson 在 ASP.NET 网站上的入门资料。查看this 和其他内容。

    【讨论】:

    • 好的,非常感谢您的澄清。我看过 Mike Wasson 的教程,但避免使用它们,因为我们不需要网页本身,因为我们不需要为此提供接口,所以我想避免学习 MVC 并尽可能只关注 API . API 只能由将 XML 发布到我们的 API 的自动数据导出系统访问。尽管您可以推荐任何其他教程...... :-)
    • 在实际的"{controller}" 代码上我还能读到什么。谷歌搜索几乎没用,因为它是一个常见的词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2012-03-10
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多