Add support for $schema and jsonSchemaDialect
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- csharp, openapi
- Domínio
- api, backend-api-design
Direção de pesquisa
Comece rastreando os desserializadores e serializadores de OpenAPISchema e identificando onde a suposição 2020-12 é aplicada. Defina o serviço JSON Schema em torno do registro de dialetos, da resolução de fallback, do tratamento recursivo de schemas desconhecidos e das restrições de segurança; considera-se concluído quando $schema e jsonSchemaDialect selecionarem o dialeto conhecido ou carregado correto sem quebrar o comportamento existente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
In today's implementation (2.11.0, 3.9.0), the deserialization and serialization of JSON Schemas is effectively hard-coded to 2020-12.
However, starting with OpenAPI 3.1, people can set the $schema property of any given schema to a different dialect (default being documented here.
This entails a couple of things:
- parsing that keyword first if it exists, or falling back on the document dialect property, or falling back to the default value for the OpenAPI version.
- if that value is known (like
https://spec.openapis.org/oas/3.1/dialect/baseusing the parsing logic associated with that entry - if that value is unknown, we need to load the corresponding schema, and read its schema (recursively) until we find a known value. (note be careful of the security considerations here)
Note: ideally we'd make the OpenAPISchema type generic and allow the caller to provide new registrations of schemas uris with the corresponding parsing logic and data type, but that'd introduce major breaking changes, making the cost prohibitive.
That update will most likely require introducing a JSON Schema service of some kind in charge of mapping the known schemas with their deserialization logic, and having the OpenAPISchema deserializers call into that service.
- Linguagem predominante
- C#
- Estrelas
- 1.6k
- Forks
- 286
- Merge médio
- 6h 38min
- PRs com merge (30d)
- 35
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de microsoft/OpenAPI.NET
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
microsoft/OpenAPI.NET#2798 ·
-
microsoft/OpenAPI.NET#3056 · 1 comentário · 1 reação · 2 responsáveis ·
-
type:breaking-change
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
microsoft/OpenAPI.NET#3014 · 2 comentários ·
-
Implement equality (`IEquatable<T>` and override object.Equals/GetHashCode) for object models Abertahelp wanted
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
microsoft/OpenAPI.NET#2989 · 3 comentários ·
-
help wanted type:feature
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
microsoft/OpenAPI.NET#2967 · 18 comentários · 1 reação ·
Todas as issues de microsoft/OpenAPI.NET
Issues semelhantes
-
release-notes in .NET 11 RC2 Abertapriority-0
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
StackExchange/StackExchange.Redis#3249 ·
-
[Feat] 조합 영역 구분선 개선 Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
type/automation type/tech-debt
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100