【问题标题】:Web API with Swagger带有 Swagger 的 Web API
【发布时间】:2017-04-01 17:56:58
【问题描述】:

我是 .NET /MVC/ Web API 的新手。我创建了一个 .Net Web API,它接受输入参数查询 OracleDatabase 并以 JSON 格式返回结果。几乎遵循简单的 C# 代码。而且效果很好。我的控制器看起来像

public class DataController : ApiController
{
 [HttpGet]
public HttpResponseMessage Getdetails(string ROOM, DateTime DOB_GT)
{
        List<OracleParameter> prms = new List<OracleParameter>();
        prms.Add(new OracleParameter("ROOM", OracleDbType.Varchar2, ROOM, ParameterDirection.Input));
        prms.Add(new OracleParameter("DOB_GT", OracleDbType.Date, DOB_GT, ParameterDirection.Input));
       string connStr = ConfigurationManager.ConnectionStrings["SDataBaseConnection"].ConnectionString;
        using (OracleConnection dbconn = new OracleConnection(connStr))
        {
            DataSet userDataset = new DataSet();
            var strQuery = "SELECT * from SAMPLE_RESULTS_VW where ROOM = :ROOM and DOB > :DOB_GT ";
            var returnObject = new { data = new OracleDataTableJsonResponse(connStr, strQuery, prms.ToArray()) };
            var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json"));
            ContentDispositionHeaderValue contentDisposition = null;
            if (ContentDispositionHeaderValue.TryParse("inline; filename=TGSData.json", out contentDisposition))
            {
                response.Content.Headers.ContentDisposition = contentDisposition;
            }
            return response;
        }

但客户端应用程序无法将此 Web API 用作 Visual Studio 中的添加服务引用。所以我尝试使用 Swagger,我安装了它们。我正在获取 Swagger Page 并能够通过提供查询输入来测试 API,它确实返回了结果。

我不明白我们将给客户端用来从 API 获取元数据的端点 URL 是什么。或者我有没有做任何进一步的配置来生成元数据。我是 .NET 的新手并且被困在这个问题上。

【问题讨论】:

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


    【解决方案1】:

    如果您使用 MVC,我不确定您所说的客户端是什么意思。

    您是否有两个应用程序: a) 前端 .NET 应用程序 AND b) 与数据库对话的后端 .NET 应用程序?

    两个 .NET 应用程序

    退房 Get started with API Apps, ASP.NET, and Swagger in Azure App Service(与 Azure 无关)。

    本教程描述了一种设置,其中有 .NET 应用程序,中间的应用程序导入一个 swagger 'file' 以使用与 db 对话的后端应用程序的 API。

    根据我的经验,这种设置很浪费,但我不知道您的需求是什么。

    一个 .NET 应用程序

    如果您只有一个 MVC 应用程序,那么就真的没有客户端。

    这可能有用: Create an ASP.NET MVC app with auth and SQL DB and deploy to Azure App Service

    【讨论】:

    • 我创建了 Web API,而其他团队正在创建一个将使用 Web API 的客户端。但由于 Web API 是安静的,他们不能作为 Web 参考。所以他们询问 API 是否可以为他们提供元数据或 .wsdl,以便他们可以在客户端中添加作为参考。但我不知道该怎么做
    • 他们使用什么技术?
    • 他们正在使用 .NET
    • 在 Azure 应用服务中开始使用 API 应用、ASP.NET 和 Swagger 包含所有步骤
    【解决方案2】:

    您将 swagger 文档的 URL 作为文档提供给客户。当您单击 Try 按钮时,文档也会为您提供发送 JSON 的 URL。

    【讨论】:

    • 我很抱歉如何获得 Swagger 文档。是https://localhost:46151/swagger/docs/v1
    • 如果我给它说[Fiddler] The connection to 'localhost' failed. Error: ConnectionRefused (0x274d). System.Net.Sockets.SocketException No connection could be made because the target machine actively refused it 127.0.0.1:46151
    • 招摇文档是你的绿色截图。有一个按钮可以测试它,对吗?我使用 .Net Core 的招摇,但它应该是相似的。在该测试页面上填写必填字段并点击按钮后,它将为您提供有关您发布到何处以及如何发布的所有信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    相关资源
    最近更新 更多