【问题标题】:Failed to load API definition, Fetch error: undefined /swagger/v1/swagger.json加载 API 定义失败,获取错误:未定义 /swagger/v1/swagger.json
【发布时间】:2021-06-03 04:04:08
【问题描述】:

发生了这个错误,我在所有站点上尝试了所有可能的解决方案,但仍然无法正常工作 我尝试大摇大摆的操作 我尝试路线 我尝试 HttpGet("List/{id}") 没有什么对我有用 错误详情如下:

      An unhandled exception has occurred while executing the request.
      Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: Ambiguous HTTP method for action - MandobX.API.Controllers.ShipmentOperationsController.GetShipmentOperations (MandobX.API). Actions require an explicit HttpMethod binding for Swagger/OpenAPI 3.0
         at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
         at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
         at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(String documentName, String host, String basePath)
         at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
         at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) 

我的代码: 控制器动作:

//Get lists of drivers, regions and packagges type to create shipment operation
        [Route("Init")]
        [HttpGet]
        public async Task<IActionResult> InitShipment()
        {
            ShipmentViewModel shipmentInitViewModel = new ShipmentViewModel
            {
                Drivers = await _context.Drivers.Include(d => d.User).Include(d => d.Vehicle).ToListAsync(),
                PackageTypes = await _context.PackageTypes.ToListAsync(),
                Regions = await _context.Regions.ToListAsync()
            };
            return Ok(new Response { Code = "200", Data = shipmentInitViewModel, Msg = "Task Completed Succesfully", Status = "1" });
        }
        // GET: api/ShipmentOperations
        [SwaggerOperation("List")]
        [Route("List")]
        [HttpGet("List/{userId}")]
        public async Task<ActionResult<IEnumerable<ShipmentOperation>>> GetShipmentOperations()
        {
            return await _context.ShipmentOperations.ToListAsync();
        }

        [SwaggerOperation("Details")]
        [Route("Details")]
        [HttpGet("Details/{id}")]
        public async Task<ActionResult<ShipmentOperation>> GetShipmentOperation(string id)
        {
            var shipmentOperation = await _context.ShipmentOperations.FindAsync(id);

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

            return shipmentOperation;
        }

谁能帮我解决这个问题?

【问题讨论】:

    标签: c# asp.net-core swagger swashbuckle.aspnetcore


    【解决方案1】:

    答案在这篇文章的 github 上 https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/982 解决方案是让路由注释负责生成的路由,如下所示:

            [Route("List/{userId}")]
            [HttpGet]
            public async Task<ActionResult<IEnumerable<ShipmentOperation>>> 
            GetShipmentOperations(string userId)
            {
                return await _context.ShipmentOperations.ToListAsync();
            }
    
            // GET: api/ShipmentOperations/5
            [Route("Details/{id}")]
            [HttpGet]
            public async Task<ActionResult<ShipmentOperation>> GetShipmentOperation(string id)
            {
                var shipmentOperation = await _context.ShipmentOperations.FindAsync(id);
    
                if (shipmentOperation == null)
                {
                    return NotFound();
                }
    
                return shipmentOperation;
            }
    

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2019-12-23
      • 2019-11-13
      • 2021-05-31
      • 2022-01-25
      • 1970-01-01
      • 2018-10-16
      • 2018-09-18
      • 2022-06-21
      相关资源
      最近更新 更多