对于通过[FromBody]
传递到操作中的模型,我喜欢使其属性不可变public int SomeProperty{get;private set;}
。这样我就知道我的处理程序的输入没有被修改。
我遇到的问题是Swagger和Swashuckle完全忽略了这些字段来呈现参数有效负载的示例。我查看了从我们的API生成的swagger模式,发现所有提到的字段都有
只读:true
。
我想知道是否有办法配置Swashbuckler或Swagger,使其不忽略这些属性。或者,也许有某种方法可以使用Swashback扩展框架的某些部分将每个定义的readonly设置为false?
编辑:从swagger添加示例。json
在本例中,someProperty被标记为只读。我认为这就是为什么该属性没有显示在生成的POST参数示例中的原因。如果有一种方法可以让swagger gen不添加任何只读属性,我会接受的。
{
"type": "object",
"properties": {
"someProperty": {
"format": "int32",
"type": "integer",
"readOnly": true
},
}
}
所以我找到了一个解决方案。我创建了一个ISchemaFilter实现,它只是将每个属性上的readonly设置为false。我需要更多地考虑这意味着下游,所以我还不确定我是否喜欢这个解决方案。
public class IgnoreReadOnlySchemaFilter : ISchemaFilter
{
public void Apply(Schema schema, SchemaFilterContext context)
{
schema.ReadOnly = false;
if (schema.Properties != null)
{
foreach (var keyValuePair in schema.Properties)
{
keyValuePair.Value.ReadOnly = false;
}
}
}
}
而在帖子上,我应该看到的只是: 尝试添加:@apimodelproperty(readonly=true)。但那没用。
使用斜扣。ASP中的AspNetCore。NET Core webapp,我们有如下响应类型: 使用Swashback发出swagger API JSON时,这将变成: 这里的问题是,DateTime是一种值类型,不能为null;但是发出的Swagger API JSON没有将这两个属性标记为必需的。这种行为对于所有其他值类型都是一样的:int、long、byte等,它们都被认为是可选的。 为了完
我有一个类用户 我的控制器 它大摇大摆地显示
问题内容: 使用Angular Material时,我一直看到aria属性。有人可以向我解释,aria前缀是什么意思?但最重要的是,我想了解的是和属性之间的区别。 问题答案: ARIA(可访问的富Internet应用程序)定义了一种使残障人士更容易访问Web内容和Web应用程序的方法。 该属性是HTML5中的新增属性,它告诉 浏览器 不要显示该元素。该属性告诉 屏幕阅读器 是否应该忽略该元素。请查
问题内容: 是否可以编写和创建Firefox中的Firebug插件无法捕获的JavaScript Ajax请求? 我之所以这样询问,是因为我可以在Facebook上看到没有正在进行的Ajax请求,但是当我从另一个帐户发送消息时,顶部的消息框仍会添加“ 1条未读消息”指示符。甚至有可能实现? 谢谢。 问题答案: Firebug将“标准” AJAX请求记录到控制台面板;这些是使用ActiveX / X
我在一个...NET Core 3.1项目,将我的XML注释导入到Swagger中。我在一个控制器上有一个POST请求,我想在Swagger中注册一些响应状态(201, 401, 403, 404)。问题是,在文件和Swagger UI界面中,我还看到一个200成功响应与我显式指定的状态代码响应并列。 正如在多个不同的地方建议的那样,我正在使用属性来尝试并防止这种情况,但是我所尝试的一切仍然会导致