Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Swagger文档有空路径

Swagger文档有空路径
EN

Stack Overflow用户
提问于 2021-01-14 07:14:52
回答 2查看 1.7K关注 0票数 1

我的Swagger文档没有正确生成,我有基本信息(标题、名称、许可证等),但我的路线上没有文档。

下面是Startup.cs中的设置:

代码语言:javascript
运行
AI代码解释
复制
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<APIContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddControllersWithViews();
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo
            {
                Version = "v1",
                Title = "OpenWeb Challenge",
                Description = "A 'simple' example ASP.NET Core Web API",
                TermsOfService = new Uri("https://example.com/terms"),
                Contact = new OpenApiContact
                {
                    Name = "Anthony Da Silva Ferreira",
                    Email = string.Empty,
                    Url = new Uri("https://twitter.com/spboyer"),
                }
            });

            var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            c.IncludeXmlComments(xmlPath);
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseSwagger();
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "OpenWebChallenge V1");
        });
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }

以及自夸的内容:

代码语言:javascript
运行
AI代码解释
复制
{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenWeb Challenge",
    "description": "A 'simple' example ASP.NET Core Web API",
    "termsOfService": "https://example.com/terms",
    "contact": {
      "name": "Anthony Da Silva Ferreira",
      "url": "https://twitter.com/spboyer",
      "email": ""
    },
    "license": {
      "name": "Licence",
      "url": "https://example.com/license"
    },
    "version": "v1"
  },
  "paths": { },
  "components": { }
}

控制器样本:

代码语言:javascript
运行
AI代码解释
复制
public class ContactsController : Controller
{
    private readonly APIContext _context;

    public ContactsController(APIContext context)
    {
        _context = context;
    }

    // GET: Contacts
    public async Task<IActionResult> Index()
    {
        return View(await _context.Contacts.ToListAsync());
    }

    // GET: Contacts/Details/5
    public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var contact = await _context.Contacts
            .Include(c => c.ContactSkills)
                .ThenInclude(cs => cs.Skill)
            .AsNoTracking()
            .FirstOrDefaultAsync(m => m.Id == id);

        if (contact == null)
        {
            return NotFound();
        }

        return View(contact);
    }
}

我是不是漏掉了什么配置什么的?这是我第一次从头开始创建API。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-14 07:34:35

您将PropertyGroup添加到PROJECT_NAME.csproj文件了吗?

代码语言:javascript
运行
AI代码解释
复制
<PropertyGroup>
   <GenerateDocumentationFile>true</GenerateDocumentationFile>
   <NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>

没有它,编译器将不会生成文档文件。

Microsoft文档

编辑

在文档中,它说:“您必须为您想要在Swagger文档中表示的任何控制器使用属性路由”链接。因此,对于您的控制器,它将是:

代码语言:javascript
运行
AI代码解释
复制
[Route("api/contacts")]
public class ContactsController : Controller
{
...

    // GET: Contacts
    [HttpGet("")]
    public async Task<IActionResult> Index()
    {
    ...
    }

    // GET: Contacts/Details/5
    [HttpGet("/details/{id?}")]
    public async Task<IActionResult> Details([FromRoute] int? id)
    {
        ...
    }
}

编辑

我使用了错误的路由模板语法:

代码语言:javascript
运行
AI代码解释
复制
[HttpGet("/details/:id?")] -> [HttpGet("/details/{id?}")]

?可选参数

票数 1
EN

Stack Overflow用户

发布于 2021-01-19 22:17:39

从您的代码来看,ContactsController看起来像是一个MVC控制器(它将返回视图),而不是API控制器。

摇摆者(OpenAPI)是一种语言无关的规范,用于描述REST ,而不是MVC控制器.因此,它不会为MVC控制器生成Swagger文档。尝试添加一个API控制器,然后,使用Swagger添加API信息和描述。

有关使用Swagger的详细信息,请检查开始使用Swashbuckle和ASP.NET核心

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65721666

复制
相关文章
React技巧之检查元素是否可见
原文链接:https://bobbyhadz.com/blog/react-check-if-element-in-viewport[1]
chuckQu
2022/08/19
1.1K0
js判断元素在某个区域内是否可见(转)
getBoundingClientRect用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。getBoundingClientRect是DOM元素到浏览器可视范围的距离(不包含文档卷起的部分)。
山河木马
2019/03/05
7.7K0
CSS样式更改——多列、元素是否可见、图片透明度
上篇文章主要讲述了CSS样式更改中的过渡、动画基础知识,这篇文章我们来介绍下CSS样式更改中多列、元素是否可见、图片透明度知识。。
前端皮皮
2020/11/25
1.1K0
selenium元素定位中css或者xpath不选择某一类元素
例如,下列标签中,不选择class为disable的span标签 则 这样写 dd:not(.disabled) > span 或者 dd:not(.disabled) span
小黑同学
2020/08/16
1.9K0
selenium元素定位中css或者xpath不选择某一类元素
小程序中点击子元素事件而不触发父元素的点击事件
在测试小程序的时候,发现了这样的一个bug,点击子元素事件d的时候触发父元素的点击事件,从而执行父级的点击事件,跳转到了父级的点击事件的页面了。
王小婷
2019/02/21
6.1K0
小程序中点击子元素事件而不触发父元素的点击事件
win10 uwp 弹起键盘不隐藏界面元素
本文主要讲,在我们使用手机输入的时候,会因为手机的虚拟键盘隐藏了一些界面的元素。我们有一个简单的方法让虚拟键盘不隐藏界面元素。
林德熙
2018/09/18
7150
win10 uwp 弹起键盘不隐藏界面元素
内存可见性
可见性:当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。如果没有同步,这种情况就无法实现。 下面的代码说明了当多个线程在没有同步的情况下共享数据时出现的错误。在代码中,主线程和读线程都会访问共享变量ready和number。很显然代码看起来会输出42,但事实上肯可能输出0(重排序导致),甚至根本无法终止。这是因为代码中没有足够的同步机制,因此无法保证主线程写入ready和number对读线程是可见的。 public class NoVisibility{     private static b
SuperHeroes
2018/05/31
8360
【Java线程】线程安全三元素:原子性、可见性、有序性
首先大家需要思考一下何为线程安全性呢??? 《Java并发编程实战》书中给出定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在调用代码中不需要任何额外的同步,这个类都能表现出正确的行为,那么这个类就是线程安全的。
沁溪源
2021/03/22
4440
光敏电阻遇上日夜切换
光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低,亮电阻值可小至1KΩ以下。光敏电阻对光线十分敏感,其在无光照时,呈高阻状态,暗电阻一般可达1.5MΩ。光敏电阻的特殊性能,随着科技的发展将得到极其广泛应用。
AomanHao
2022/01/14
4530
光敏电阻遇上日夜切换
爬虫实现csdn文章一键(批量)更换阅读类型(全部可见、粉丝可见、vip可见)
“ 动手创造美好” - bigsai
bigsai
2019/09/24
2.7K0
爬虫实现csdn文章一键(批量)更换阅读类型(全部可见、粉丝可见、vip可见)
对象可见性
此引出 Java 的一个一般设计原则——对象默认可见。如果我有一个对象的引用,就可以复制一个副本,然后将其交给另一个线程,不受任何限制。Java 中的引用其实就是类型指针,指向内存中的一个位置,而且所有线程都共用同一个地址空间,所以默认可见符合自然规律。
宇宙之一粟
2020/11/24
4780
【C语言笔记】ASCII码可见字符与不可见字符
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。下面看一段示例代码,用于输出ASCII码:
正念君
2019/06/26
4.7K0
【C语言笔记】ASCII码可见字符与不可见字符
github设置仓库可见性 私人仓库设置他人协作/可见
GitHub.com 的所有人访问,而私有仓库只有您和您与其共享的人员可访问。 内部仓库适用于 GitHub Enterprise Cloud 并且只有企业帐户的成员可访问。 更多信息请参阅“创建内部仓库”。
种花家的奋斗兔
2020/11/13
19.3K0
github设置仓库可见性  私人仓库设置他人协作/可见
PostgreSQL vacuum可见性
2)该tuple是当前事务产生的:此时这个记录在这个事务未删除或只是被锁住或进行了delete但是delete abort了,那返回HAPTUPLE_INSERT_IN_PROGRESS;若则记录又被删除了,那返回HEAPTUPLE_DELETE_IN_PROGRESS
yzsDBA
2020/10/28
4930
PostgreSQL vacuum可见性
Volatile 可见性承诺
Java Volatile 关键字是一种轻量级的数据一致性保障机制,之所以说是轻量级的是因为 volatile 不具备原子性,它对数据一致性的保障体现在对修改过的数据进行读取的场景下(也就是数据的可见性)。比起对读操作使用互斥锁, volatile 是一种很高效的方式。因为 volatile 不会涉及到线程的上下文切换,以及操作系统对线程执行的调度运算。同时 volidate 关键字的另一个功能是解决“指令重排序问题”。
不会飞的小鸟
2020/03/17
6950
Typecho回复可见功能
最近逛博客,发现大家的博客都有回复可见的功能 回到我的博客一看发现没有,这可不得行 于是我也整了一个233,顺便分享给大家
HCG_Sky
2020/07/24
2.3K2
Unicode不可见字符
不可见字符”\u200b”为 Unicode Character ‘ZERO WIDTH SPACE’ (U+200B),可用于内容标识,不占位数。
周小董
2019/03/25
5.6K0
Unicode不可见字符
Android可见APP的不可见任务栈(TaskRecord)销毁分析
Android依托Java型虚拟机,OOM是经常遇到的问题,那么在快达到OOM的时候,系统难道不能回收部分界面来达到缩减开支的目的码?在系统内存不足的情况下,可以通过AMS及LowMemoryKiller杀优先级低的进程,来回收进程资源。但是这点对于前台OOM问题并没有多大帮助,因为每个Android应用有一个Java内存上限,比如256或者512M,而系统内存可能有6G或者8G,也就是说,一个APP的进程达到OOM的时候,可能系统内存还是很充足的,这个时候,系统如何避免OOM的呢?ios是会将不可见界面都回收,之后再恢复,Android做的并没有那么彻底,简单说:对于单栈(TaskRecord)应用,在前台的时候,所有界面都不会被回收,只有多栈情况下,系统才会回收不可见栈的Activity。注意回收的目标是不可见栈(TaskRecord)的Activity。
看书的小蜗牛
2019/02/22
1.5K0
Android可见APP的不可见任务栈(TaskRecord)销毁分析
点击加载更多

相似问题

硒python使不可见元素可见。

14

硒元素不可见

12

元素不可见,硒

12

硒元素不可见?

32

不可识别为可见的硒可见元素

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文