asp.net-core - 在我的控制器上大摇大摆地缺少文档
问题描述
我正在大摇大摆地挣扎。除了 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>();
});
解决方案
我将测试您的场景以及由只读属性引起的这个问题。
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; }
}
但我认为这是一个不合逻辑的解决方案。不合逻辑的事情是记录一个无法从客户端分配的变量。
我希望它有所帮助。
推荐阅读
- sql - 如何为每个客户选择最常见的项目 ID?
- go - 如何在不使用字段的情况下在 Uber Zap 中记录键/值对
- powershell - 如何将命名参数传递给powershell中的另一个脚本
- drools - 感觉:list contains(inputDataNumberList, 1) with inputDataNumberList= [0,1] 返回 false
- html - 页脚不会停留在移动视图中
- java - 如何在 Java 中获取泛型类型类的类
- css - react-scripts build 打包时忽略 css 文件
- javascript - 如何使用 JavaScript 使 Css 类消失和出现
- powershell - New-PSSession 冻结脚本
- python - 读取 csv 文件中的特定单元格