为什么未应用api版本?

加布里埃尔·卢卡(Gabriel Luca)

我有以下代码Statup.cs来设置带有多种版本的Web API。问题是未使用该版本-请参见下面的屏幕截图。

我在配置选项中确实使用了AddApiVersioning ..以及UrlSegmentApiVersionReader作为ApiVersionReader。

我想念什么?

我使用的框架是.NetCore 3.0。

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Versioning;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using System;
using System.IO;
using System.Reflection;

namespace SwaggerUI
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Register the Swagger generator, defining 1 or more Swagger documents
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "Employee API",
                    Version = "v1",
                    Description = "An API to perform Employee operations",
                    TermsOfService = new Uri("https://example.com/terms"),
                    Contact = new OpenApiContact
                    {
                        Name = "John Walkner",
                        Email = "[email protected]",
                        Url = new Uri("https://twitter.com/jwalkner"),
                    },
                    License = new OpenApiLicense
                    {
                        Name = "Employee API LICX",
                        Url = new Uri("https://example.com/license"),
                    }
                });

                c.SwaggerDoc("v2", new OpenApiInfo
                {
                    Title = "Employee API",
                    Version = "v2",
                    Description = "An API to perform Employee operations",
                    TermsOfService = new Uri("https://example.com/terms"),
                    Contact = new OpenApiContact
                    {
                        Name = "John Walkner",
                        Email = "[email protected]",
                        Url = new Uri("https://twitter.com/jwalkner"),
                    },
                    License = new OpenApiLicense
                    {
                        Name = "Employee API LICX",
                        Url = new Uri("https://example.com/license"),
                    }
                });

                // Set the comments path for the Swagger JSON and UI.
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
            });

            services.AddControllers();

            services.AddApiVersioning(o => {
                o.ReportApiVersions = true;
                o.AssumeDefaultVersionWhenUnspecified = true;
                o.DefaultApiVersion = new ApiVersion(1, 0);
                o.ApiVersionReader = new UrlSegmentApiVersionReader();
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseStaticFiles();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

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

            // Enable middleware to serve generated Swagger as a JSON endpoint.
            app.UseSwagger(x => x.SerializeAsV2 = true);

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

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

加布里埃尔·卢卡(Gabriel Luca)

我找到了答案:

  • 在services.AddApiVersioning之后,我添加了services.AddVersionedApiExplorer,在我想要添加对Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer的引用之前
            services.AddVersionedApiExplorer(o =>
            {
                o.GroupNameFormat = "'v'VVV";
                o.SubstituteApiVersionInUrl = true;   // this is needed to work
            });

在这里查看代码:https : //github.com/LucaGabi/SwaggerUI

另请参阅此处https://github.com/LucaGabi/WebApplication1更复杂的设置

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么未应用此文本阴影?

来自分类Dev

为什么我的XAML应用未显示

来自分类Dev

为什么此应用程序未消耗预期的内存

来自分类Dev

为什么在此示例中未应用SFINAE?

来自分类Dev

为什么未应用K8吊舱限制?

来自分类Dev

为什么此onClick事件未正确应用?

来自分类Dev

为什么未应用BeginForm函数中的html内容

来自分类Dev

为什么在此Java代码中未应用拆箱?

来自分类Dev

WPF绑定未应用-为什么会发生

来自分类Dev

如果我在考拉中指定了v2.2版本,为什么Facebook声称我的Facebook应用“仍在调用Graph API v1.0”?

来自分类Dev

为什么Google Places API随机返回“未授权”错误?

来自分类Dev

REST API版本控制-为什么不对模型进行版本控制

来自分类Dev

为什么不能同时使用DocuSign API的REST版本和SOAP版本?

来自分类Dev

在libraryDependencies中未使用%%时,为什么将Scala版本添加到URL?

来自分类Dev

为什么apt-get升级未安装最新的PHP版本?

来自分类Dev

为什么作曲家使用未打补丁的文件版本?

来自分类Dev

为什么在vuejs应用中未禁用vuejs应用中的preferred-const规则?

来自分类Dev

什么是Azure API版本

来自分类Dev

为什么要为RESTful API创建单独的应用程序?

来自分类Dev

为什么我的应用无法从我的API读取JSON?

来自分类Dev

为什么indexedDB使用“版本”?

来自分类Dev

为什么Android应用程序徽标不提供5.0版本?

来自分类Dev

为什么在Android Studio中使用教程应用程序会得到“不受支持的Gradle版本”?

来自分类Dev

为什么我的winforms应用程序中的自动版本没有增加?

来自分类Dev

为什么NBug HostApplicationVersion显示的应用程序版本不正确?

来自分类Dev

当基线为增量时,为什么将标签应用于我的版本

来自分类Dev

为什么应用程序无法在Android设备版本2.3到2.3.7中运行

来自分类Dev

为什么您不能为低于android 5.0的版本开发android TV应用程序?

来自分类Dev

为什么MobileFirst应用程序商店应用程序未显示我的MobileFirst应用程序图标

Related 相关文章

  1. 1

    为什么未应用此文本阴影?

  2. 2

    为什么我的XAML应用未显示

  3. 3

    为什么此应用程序未消耗预期的内存

  4. 4

    为什么在此示例中未应用SFINAE?

  5. 5

    为什么未应用K8吊舱限制?

  6. 6

    为什么此onClick事件未正确应用?

  7. 7

    为什么未应用BeginForm函数中的html内容

  8. 8

    为什么在此Java代码中未应用拆箱?

  9. 9

    WPF绑定未应用-为什么会发生

  10. 10

    如果我在考拉中指定了v2.2版本,为什么Facebook声称我的Facebook应用“仍在调用Graph API v1.0”?

  11. 11

    为什么Google Places API随机返回“未授权”错误?

  12. 12

    REST API版本控制-为什么不对模型进行版本控制

  13. 13

    为什么不能同时使用DocuSign API的REST版本和SOAP版本?

  14. 14

    在libraryDependencies中未使用%%时,为什么将Scala版本添加到URL?

  15. 15

    为什么apt-get升级未安装最新的PHP版本?

  16. 16

    为什么作曲家使用未打补丁的文件版本?

  17. 17

    为什么在vuejs应用中未禁用vuejs应用中的preferred-const规则?

  18. 18

    什么是Azure API版本

  19. 19

    为什么要为RESTful API创建单独的应用程序?

  20. 20

    为什么我的应用无法从我的API读取JSON?

  21. 21

    为什么indexedDB使用“版本”?

  22. 22

    为什么Android应用程序徽标不提供5.0版本?

  23. 23

    为什么在Android Studio中使用教程应用程序会得到“不受支持的Gradle版本”?

  24. 24

    为什么我的winforms应用程序中的自动版本没有增加?

  25. 25

    为什么NBug HostApplicationVersion显示的应用程序版本不正确?

  26. 26

    当基线为增量时,为什么将标签应用于我的版本

  27. 27

    为什么应用程序无法在Android设备版本2.3到2.3.7中运行

  28. 28

    为什么您不能为低于android 5.0的版本开发android TV应用程序?

  29. 29

    为什么MobileFirst应用程序商店应用程序未显示我的MobileFirst应用程序图标

热门标签

归档