" REST API客户端" Visual Studio for ASP.NET核心项目中的选项?

时间:2016-03-08 10:02:24

标签: .net azure asp.net-web-api

我已经在Azure中启动并运行了ASP.NET REST API。从Visual I中较旧的.NET 4.5项目中,使用此菜单选项生成了一个客户端:

Old .NET 4.5 project

但是当我创建一个新的ASP.NET Core(ASP.NET 5)项目,并且想要生成客户端时,没有这样的选项:

New ASP.NET Core project

在ASP.NET Core项目中为我的REST api生成客户端的预期方法是什么?

2 个答案:

答案 0 :(得分:6)

在ASPNET Core 1.0上,该方法(至少现在可能会发生变化)是使用Swagger生成REST API文档,一旦这样做,您可以使用AutoRest自动生成一个多种语言的客户。

要在核心应用中使用Swagger,请添加projects.json文件:

"dependencies": {
    ...
    "Swashbuckle": "6.0.0-rc1-final"
},

然后在您的Startup.cs文件中,您可以添加初始化:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //other uses

    //this generates the swagger.json file
    app.UseSwaggerGen();

    //this is optional, it will generate a visual website for your documentation
    app.UseSwaggerUi();
}

UseSwaggerUi将生成http://yourdomain/swagger/ui/index.html中包含“人类可读”内容的网址。UseSwaggerGen将在swagger.json生成http://yourdomain/swagger/v1/swagger.json文件。

最后,你需要装饰你的方法告诉Swagger他们提供什么样的输出(输入是自动检测的),添加类似的东西:

[Produces(typeof(MyItemClass))]
[SwaggerResponse(System.Net.HttpStatusCode.OK, Type = typeof(MyItemClass))]
[HttpGet("{id}")]
public IActionResult Get(string id)
{
    if (string.IsNullOrEmpty(id))
    {
        return HttpBadRequest();
    }
    var item = _service.GetRecord(id);
    if (item == null)
    {
        return HttpNotFound();
    }
    return new ObjectResult(item);
}

希望它有助于清理事情。

UPDATE :要使用AutoRest生成客户端,只需转到命令提示符(安装了AutoRest)并浏览到项目文件夹,然后键入:

autorest -Namespace YourDesiredNamespace -Input http://yourapi/swagger/v1/swagger.json

这将在项目中创建一个“Generated”文件夹,其中包含您甚至可以在Startup.cs文件中使用的所有文件和代理类,并定义依赖注入。

public void ConfigureServices(IServiceCollection services)
{
//....
services.AddSingleton<IYourApi>(provider =>
{
    return new YourAPI(new Uri("http://yourapi"));
});
}

答案 1 :(得分:0)

我也遇到这个问题,所以我建立了一个名为REST API Client Code Generator的工具来解决它。我在团队中工作过,在这些团队中,我们使用了AutoRest,NSwag和Swagger Codegen之类的工具来生成REST API客户端,并从.NET Core Web应用程序中使用它。总是让我感到烦恼的是,Visual Studio中的“添加新的-REST API客户端...”工具并不总是有效,并且在重新生成客户端时非常麻烦

Add New REST API Client

Add New REST API Client Dialog

这会将OpenAPI规范文件(Swagger.json)添加到项目并设置自定义工具,以便每次对其进行更改时,都会重新生成REST API客户端代码。您也可以右键单击Swagger.json文件并切换代码生成器

Re-generate or Switch Code Generator

对于NSwag Studio文件,您还可以右键单击并重新生成

Generate NSwag Studio Output

我主要是为个人使用和在团队中使用构建了该工具,但是如果您发现它有用但认为它缺少您真正需要的东西,那么请联系