Как сделать, чтобы Swagger установил объект только для чтенияC#

Место общения программистов C#
Ответить
Anonymous
 Как сделать, чтобы Swagger установил объект только для чтения

Сообщение Anonymous »

Я работаю со Swagger и EF Core и настраиваю внешние ключи. Единственная проблема заключается в том, что когда я настраиваю внешний ключ для EF Core, Swagger устанавливает пользовательский интерфейс для POST и PUT, чтобы включить объект класса. Я пробовал использовать SwaggerSchema и фильтры, чтобы установить класс только для чтения, но он все равно появляется, когда я пытаюсь создать новый раздел класса.
Как настроить Swagger, чтобы он знает, что «класс» доступен только для чтения, и не включать его в пользовательский интерфейс для POST и PUT?
Текущая модель ClassSection:

Код: Выделить всё

public class ClassSection
{
[Key]
public int Id { get; set; }

[ForeignKey(nameof(Id))]
public int ProfessorId { get; set; }

[ForeignKey("Class")]
public int ClassId { get; set; }

[SwaggerSchema(ReadOnly = true)]
public Class Class { get; set; }

[Required]
public int Section { get; set; }

[Required]
public DateTime StartTime { get; set; }

[Required]
public DateTime EndTime { get; set; }

[Required]
public string Building { get; set; }

[Required]
public int Room { get; set; }

[Required]
public int Capacity { get; set; }
}
Фильтр:

Код: Выделить всё

public class SwaggerFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (context.Type == typeof(ClassSection))
{
schema.Properties["class"].ReadOnly = true;
}
}
}

Код: Выделить всё

Program.cs
AddSwaggerGen:

Код: Выделить всё

builder.Services.AddSwaggerGen(options =>
{
options.EnableAnnotations();
options.SchemaFilter();
});
Тело Swagger для вызовов POST
[img]https://i .sstatic.net/6Q6zSqBM.png[/img]


Подробнее здесь: https://stackoverflow.com/questions/790 ... -read-only
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»