Swagger 的 Web API

3

我是.NET/MVC/Web API的新手。我创建了一个.NET Web API,它接受输入参数查询Oracle数据库,并以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页面,并能够通过提供查询输入来测试API,并且确实返回结果。 输入图像描述 我不明白我们将给客户端什么终点URL以从API获取元数据。或者我是否需要进行进一步的配置以生成元数据。我对.NET很新,并被困在这里。
2个回答

5

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

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

两个.NET应用程序

请查看在Azure App Service中使用API应用程序、ASP.NET和Swagger入门(它实际上与Azure无关)。

本教程描述了一种设置,在该设置中存在.NET应用程序,并且其中一个应用程序导入swagger“文件”以使用后端应用程序的API来访问数据库。enter image description here

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

一个.NET应用程序

如果您只有一个MVC应用程序,那么实际上没有客户端。

这可能会有所帮助:创建具有身份验证和SQL数据库的ASP.NET MVC应用程序并部署到Azure App Service


我创建了Web API,其他团队正在创建将使用Web API的客户端。但由于Web API是restful的,他们无法提供Web引用。因此,他们询问API是否可以向他们提供元数据或.wsdl,以便他们可以在客户端中添加引用。但我不确定如何做到这一点。 - trx
他们在使用什么技术? - tymtam
他们正在使用.NET。 - trx
使用Azure App Service中的API Apps、ASP.NET和Swagger开始,包含所有步骤。 - tymtam

2
你可以将Swagger文档的URL提供给客户作为文档,文档会在你单击“尝试”按钮时向你提供要发送JSON的URL。

对不起,我该如何获取 Swagger 文档?是 https://localhost:46151/swagger/docs/v1 吗? - trx
如果我给它,它会显示[Fiddler] 连接到 'localhost' 失败。 错误:ConnectionRefused (0x274d)。 System.Net.Sockets.SocketException 无法建立连接,因为目标计算机积极拒绝了连接 127.0.0.1:46151 - trx
Swagger文档就像是你的绿色屏幕截图。有一个测试按钮,对吧?我使用的是.Net Core的Swagger,但应该类似。一旦你在测试页面上填写了必填字段并点击按钮,它会告诉你所有关于你要发布到哪里以及如何发布的信息。 - SledgeHammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接