Fro*_*rud 12 .net azure asp.net-web-api
我已经在Azure中启动并运行ASP.NET REST API.从Visual中的旧.NET 4.5项目开始,我使用此菜单选项生成了一个客户端:
但是当我创建一个新的ASP.NET Core(ASP.NET 5)项目,并且想要生成客户端时,没有这样的选项:
在ASP.NET Core项目中为我的REST api生成客户端的预期方法是什么?
在ASPNET Core 1.0上,这种方法(至少现在可能会发生变化)是使用Swagger生成REST API文档,一旦这样做,您就可以使用AutoRest自动生成多种语言的客户端.
要在核心应用程序中使用Swagger,请在projects.json文件中添加:
"dependencies": {
...
"Swashbuckle": "6.0.0-rc1-final"
},
Run Code Online (Sandbox Code Playgroud)
然后在您的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();
}
Run Code Online (Sandbox Code Playgroud)
UseSwaggerUi将生成一个带有"人类可读"内容的URL 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);
}
Run Code Online (Sandbox Code Playgroud)
希望它有助于清理事物.
更新:要使用AutoRest生成客户端,只需转到命令提示符(安装了AutoRest)并浏览到项目文件夹,然后键入:
autorest -Namespace YourDesiredNamespace -Input http://yourapi/swagger/v1/swagger.json
Run Code Online (Sandbox Code Playgroud)
这将在项目中创建一个"Generated"文件夹,其中包含您甚至可以在Startup.cs文件中使用的所有文件和代理类,并定义依赖注入.
public void ConfigureServices(IServiceCollection services)
{
//....
services.AddSingleton<IYourApi>(provider =>
{
return new YourAPI(new Uri("http://yourapi"));
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11204 次 |
| 最近记录: |