gpt4 book ai didi

c# - 当本地主机提供 swagger.json 时,Autorest 无法针对文件解析 swagger.json

转载 作者:行者123 更新时间:2023-12-04 10:20:54 26 4
gpt4 key购买 nike

当 swagger.json 托管在网站上时,我可以使用 Autorest_core 3 生成客户端,但当它托管在本地主机上时则不能。

但是,如果我从本地主机剪切 swagger.json 并将其粘贴到一个文件中,那么我就可以生成客户端。

在 startup.ConfigureServices 我有

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

c.CustomOperationIds( d => (d.ActionDescriptor as ControllerActionDescriptor)?.ActionName);

在 Startup.Configure 中我有

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseHttpsRedirection();

// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
app.UseSwagger(c =>
{
c.RouteTemplate =
"api-docs/{documentName}/swagger.json";
});

// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("./v1/swagger.json", "My API V1");
});

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}

当我启动api并尝试生成客户端时

autorest --v3 --input-file=localhost:44338/swagger/v1/swagger.json --csharp --output-folder=generated --namespace=Connector

我得到以下输出

https://aka.ms/autorest
Loading AutoRest core 'C:\Users\kirst\.autorest\@autorest_core@3.0.6262\node_modules\@autorest\core\dist' (3.0.6262)
Loading AutoRest extension '@microsoft.azure/autorest.csharp' (~2.3.79->2.3.84)
Loading AutoRest extension '@microsoft.azure/autorest.modeler' (2.3.55->2.3.55)
Error: Failed resolving 'localhost:44338/swagger/v1/swagger.json' against 'file:///D:/Users/kirst/source/repos/Dogs/'

但是以下确实有效

autorest --v3 --input-file=D:\Users\kirst\source\repos\Dogs\src\swagger.json --csharp --output-folder=generated --namespace=Connector

[编辑笔记]

我已经广泛编辑了这个问题,因为我早些时候认为我的问题可能与我使用的 autorest 版本有关。我实际上并不清楚我是否可以使用 autorest v2 从 localhost swagger.json 生成

我刚刚发现,如果我将 swagger.json 剪切并粘贴到一个文件中,我可以从本地主机生成。我宁愿不必那样做。

可悲的是 https://aka.ms/autorest即输出给出 404

[更新]

我试过用http作为前缀

Error: Could not read 'http://localhost:44338/swagger/v1/swagger.json'

类似于https

如果我浏览到 http://localhost:44338/swagger/v1/swagger.json我得到一个错误

This site can't be reached 

如果我浏览到 https://localhost:44338/swagger/v1/swagger.json它重定向到 localhost:44338/swagger/v1/swagger.json

我尝试如下更改配置,但没有任何区别

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHttpsRedirection();
}

在我的项目调试选项卡中

app url

[更新]

我取消选中 ssl 并成功运行了以下命令。

autorest --v3 --input-file=http://localhost:60705/swagger/v1/swagger.json --csharp --output-folder=generated --namespace=Connector

如果我点击我看到的网址 an insecure url message

最佳答案

--input-file 中添加 http 后,问题就解决了:

autorest --v3 --input-file=http://localhost:5000/swagger/v1/swagger.json --csharp

更新

就 HTTPs/TLS 而言,如果 HTTPs/TLS 配置正确并且证书来自受信任的 CA,autorest 将自动工作。

如果使用自签名证书进行开发,需要额外的步骤才能在 NodeJS 中使用自签名证书:

  1. 已安装且受信任的开发证书
  2. NODE_TLS_REJECT_UNAUTHORIZED 系统变量设置为 0
  3. 关闭并重新启动所有控制台

关于c# - 当本地主机提供 swagger.json 时,Autorest 无法针对文件解析 swagger.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60861020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com