Swashbuckle.AspNetCore 버전을 버전 "4.0.1"에서 "6.2.3"으로 업데이트
3575 단어 netcorecnetframeworkswagger
Swashbuckle.AspNetCore 버전을 "4.0.1"에서 "6.2.3"으로 업데이트하는 흥미로운 작업이 있었습니다. 매우 단순해 보였지만 그렇게 보이지는 않았습니다.
주요 문제는 버전 4에서 버전5으로 전달할 때 발생하는 주요 변경 사항이었습니다. Swashbuckle.AspNetCore는 OpenAPI v2 대신 Swagger/OpenAPIversion v3를 사용하기 시작했습니다. 이 프로젝트는 다른 마이크로 서비스에서 데이터를 가져오기 위해 NSwag를 사용하여 httpClient를 생성합니다. 자동 생성된 코드를 재생성하려는 모든 시도는 Swashbuckle.AspNetCore 버전을 업데이트한 후 변경되었습니다. 이로 인해 많은 빌드 오류가 발생했습니다. 새 코드와 이전 코드 간의 차이점을 줄여야 했습니다.
프로젝트에서 비호환성을 유발하는 주요 차이점은 다음과 같습니다.
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo {Title = "title", Version = "v1"});
c.CustomOperationIds(apiDesc =>
apiDesc.TryGetMethodInfo(out MethodInfo methodInfo) ? methodInfo.Name : null);
});
public class JObjectSchemaFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (context.Type != typeof(JObject)) return;
schema.Type = "object";
schema.AdditionalProperties = null;
}
}
public class EnumSchemaFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (!context.Type.IsEnum) return;
var fields = context.Type.GetFields(BindingFlags.Static | BindingFlags.Public);
schema.Enum = fields.Select(field => new OpenApiString(field.Name)).Cast<IOpenApiAny>().ToList();
schema.Type = "string";
schema.Properties = null;
schema.AllOf = null;
}
}
public class SettingsSchemaFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (context.Type != typeof(Settings)) return;
if (schema.Required == null || schema.Required.Count == 0)
{
schema.Nullable = true;
}
}
}
내가 직면 한 모든 변화입니다.
Reference
이 문제에 관하여(Swashbuckle.AspNetCore 버전을 버전 "4.0.1"에서 "6.2.3"으로 업데이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/galenam/update-swashbuckleaspnetcore-version-from-version401-to-623-4fcf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)