首页 > 解决方案 > 在我的控制器上大摇大摆地缺少文档

问题描述

我正在大摇大摆地挣扎。除了 PUT 请求之外,我对所有方法的生成文档都很满意。url 中的 userId 有据可查,但没有其他对象 [FromBody]。“示例值”中没有任何内容。

我不明白为什么它适用于 POST 和 GET 但不适用于 PUT。是造成问题的 [FromBody] 吗?

问候

public class UpdateUserRequest
{
    public Guid UpdatedBy { get; }

    public Guid ProfilePictureId { get; }

    public int? Size { get; }

    public Guid CountryId { get; }

    public int? CityId { get; }

    public string UnitWeight { get; }

    public string UnitSize { get; }
}

用户控制器:

[HttpPut("{userId}")]
public async Task<IActionResult> UpdateUser(Guid userId, [FromBody] UpdateUserRequest request)
{
    await _userAccessModule.ExecuteCommandAsync(new UpdateUserCommand(
        userId,
        request.UpdatedBy,
        request.ProfilePictureId,
        request.Size,
        request.CountryId,
        request.CityId,
        request.UnitWeight,
        request.UnitSize));

    return Ok();
}

招摇配置:

services.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "BXWeb API",
        Version = "v1",
        Description = "BXWeb API for modular monolith .NET application."
    });

    options.EnableAnnotations();

    var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
    var commentsFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var commentsFile = Path.Combine(baseDirectory, commentsFileName);
    options.IncludeXmlComments(commentsFile);

    options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
    {
        Flows = new OpenApiOAuthFlows
        {
            Implicit = new OpenApiOAuthFlow
            {
                AuthorizationUrl = new Uri($"https://{auth0Configuration.Domain}/authorize?audience={auth0Configuration.Audience}", UriKind.Absolute),
                TokenUrl = new Uri($"https://{auth0Configuration.Domain}/oauth/token?audience={auth0Configuration.Audience}", UriKind.Absolute),
                Scopes = new Dictionary<string, string>
                {
                    {"fullaccess:sport", "Global API for sport"}
                }
            }
        },
        In = ParameterLocation.Header,
        Name = "Authorization",
        Type = SecuritySchemeType.OAuth2
    });

    options.OperationFilter<SecurityRequirementsOperationFilter>();
});

在此处输入图像描述

标签: asp.net-core.net-coreswagger-uiswashbuckle.aspnetcore

解决方案


我将测试您的场景以及由只读属性引起的这个问题。

   public class PocoModel
   {
      public Guid UpdatedBy { get; set; }

      public Guid ProfilePictureId { get; set; }

      public int? Size { get; set; }

      public Guid CountryId { get; set; }

      public int? CityId { get; }

      public string UnitWeight { get; }

      public string UnitSize { get; }
    }

大摇大摆的输出

我的解决方案;

 public class PocoModel
{
    public Guid UpdatedBy { get; set; }

    public Guid ProfilePictureId { get; set; }

    public int? Size { get; set; }

    public Guid CountryId { get; set; }

    private int? _cityId;

    public int? CityId
    {
        get => _cityId;
        set { }
    }

    public string UnitWeight { get; }

    public string UnitSize { get; }
}

大摇大摆解决后的输出

但我认为这是一个不合逻辑的解决方案。不合逻辑的事情是记录一个无法从客户端分配的变量。

我希望它有所帮助。


推荐阅读