3

swagger.json が Web サイトでホストされている場合は Autorest_core 3 を使用してクライアントを生成できますが、localhost でホストされている場合は生成できません。

ただし、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 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にリダイレクトされます

次のようにConfigureを変更してみましたが、違いはありませんでした

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

私が持っているプロジェクトのデバッグタブで

アプリの URL

[アップデート]

ssl のチェックを外し、以下を正常に実行しました。

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

表示される URL をクリックすると 安全でない URL メッセージ

4

1 に答える 1