首页 > 解决方案 > HTTP 端点/URI 如何与它调用的 WebAPI 相关

问题描述

这是一个简单的问题,但对于部署基于 Web 的应用程序的新手来说,它(至少对我而言)非常基础,但在我从 Web 上收集的任何示例中都没有明确明确(它们似乎都假设一个 certian知识水平)。我有一个 WebAPI 服务(根据名为 PiHttpTransferService 的 VS 项目),它有一个 apicontroller:

 Namespace Controllers

Public Class PIInterfaceController
    Inherits ApiController
    <Route("{forThisTime}/{piServerName}/{piPntSrc}/{piTagFilter}")>
    <HttpGet>
    Public Function GetPiData(ByVal forThisTime As DateTime, ByVal piServerName As String, ByVal piPntSrc As String, ByVal piTagFilter As String) As String
        Dim result As String = Nothing

        'Code to do get data from a database

       Return result
    End Function


End Class
 End Namespace

这与从 Web 浏览器发出的请求有何关系。抱歉,我确信对这里的大多数人来说是非常基本的知识,但是我的酒吧的起始高度非常低:-)

亲切的问候保罗。

标签: asp.net-web-apivisual-studio-2017

解决方案


通常,您将 API 部署到某处的服务器,这使得它可以在特定的地址/URL 上使用。
在 IIS 中,这是一个网站,它具有与之关联的绑定,并且这些绑定将包含诸如主机名或 IP 地址以及该网站应响应的端口之类的详细信息。例如https://www.example.com

当您在 Visual Studio 中运行/调试项目时,它会为您处理此问题并启动一个精简的 Web 服务器,该服务器指向您的已编译代码,并为您的项目绑定一个具有与之关联的随机端口号的绑定。这就是您http://localhost:7812在浏览器中看到类似内容的原因。

您在控制器方法上定义的路由是应该附加到主机名以针对该特定方法的路径。因此,从上面的控制器中,您将使用类似于此的调用访问该方法(仅主机名示例,显然 :P ):

https://www.example.com/2020-01-01T00:00:00Z/servername/1/tag/
http://localhost:7812/2020-01-01T00:00:00Z/servername/1/tag/

这很简短,希望对您有所帮助,但是这里可以讨论很多事情,例如配置绑定或 DNS,甚至可能是应用程序池。我希望这可以解决您问题的最初症结。


推荐阅读