-
Notifications
You must be signed in to change notification settings - Fork 246
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consider returning reference type from AddComponent
API
#2162
Comments
Hi @captainsafia options.AddOperationTransformer((operation, context, cancellationToken) =>
{
var schemaService = context.ApplicationServices.GetRequiredKeyedService<IOpenApiSchemaService>(context.DocumentName);
if (context.Description.RelativePath == "error")
{
var errorSchema = schemaService.GetOrCreateSchema(typeof(ProblemDetails));
context.Document.AddComponent("Error", errorSchema);
operation.Responses["500"] = new OpenApiResponse
{
Description = "Error",
Content =
{
["application/problem+json"] = new OpenApiMediaType
{
Schema = new OpenApiSchemaReference("Error", insertedSchema, document),
},
},
};
}
return Task.CompletedTask;
}); I'm not saying this would be better than your proposal, just stating it's a possibility. I think it'd be preferable to separate the two concerns, and offer something like that instead. options.AddOperationTransformer((operation, context, cancellationToken) =>
{
var schemaService = context.ApplicationServices.GetRequiredKeyedService<IOpenApiSchemaService>(context.DocumentName);
if (context.Description.RelativePath == "error")
{
var errorSchema = schemaService.GetOrCreateSchema(typeof(ProblemDetails));
var schemaId = "error";
context.Document.AddComponent(schemaId, errorSchema);
operation.Responses["500"] = new OpenApiResponse
{
Description = "Error",
Content =
{
["application/problem+json"] = new OpenApiMediaType
{
Schema = context.Document.GetReferenceForComponent(schemaId),
},
},
};
}
return Task.CompletedTask;
}); (which would return a value or throw, we could also have a TryGet variant) |
Why do you think its preferable to separate? IMO, having the |
Because:
|
The
AddComponent
API currently returns a boolean that indicates if the addition of the component to the document registry succeeded.It would be nice if the API returned a reference to the item that was just constructed. In an M.A.OpenAPI transformer, I currently need to write:
but would like to write:
cc: @baywet I couldn't see if an API that did this existed already and figured I'd add the proposal.
The text was updated successfully, but these errors were encountered: