Я могу использовать Autorest_core 3 для генерации клиента, когда swagger. json размещен на веб-сайте, но не когда он размещен на localhost.
Однако, если я вырезал и вставил swagger. json с локального хоста в файл, после чего я могу сгенерировать клиента.
При запуске. 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
[Редактировать заметку]
Я широко редактировал этот вопрос, так как раньше я думал, что моя проблема может быть связана с тем, какую версию автореста я использовал. Я не совсем уверен, могу ли я сгенерировать с помощью localhost swagger. json, используя autorest v2
Я только что обнаружил, что могу генерировать с локального хоста, если вырезать и вставить 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();
}
На вкладке отладки проекта у меня есть
[Обновление]
Я снял галочку с ssl и успешно выполнил следующее.
autorest --v3 --input-file=http://localhost:60705/swagger/v1/swagger.json --csharp --output-folder=generated --namespace=Connector
если я нажму на URL, то увижу