Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 47519|Resposta: 4

[ASP.NET] ASP.NET dos parâmetros padrão da interface Swagger no Core(8).

[Copiar link]
Publicado em 08/05/2021 13:27:02 | | | |
Swagger é um framework prescritivo e completo para construir, descrever, chamar e visualizar serviços web no estilo RESTful.

O objetivo geral é que o cliente e o sistema de arquivos atualizem na mesma velocidade do servidor. Os métodos, parâmetros e modelos do arquivo estão integrados de forma rígida ao código do lado do servidor, permitindo que as APIs permaneçam sincronizadas o tempo todo. O Swagger nunca facilitou a implantação e o uso de APIs poderosas.

revisar

ASP.NET Core (7) Análise aprofundada do código-fonte do framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obtém manualmente o método de injeção de objetos
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinco) é baseado em transações distribuídas CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validação unificada do modelo ModelState do filtro Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Criar instâncias dinamicamente usando ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Núcleo (2) Reiniciar a aplicação por código
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) usa cache Redis
https://www.itsvse.com/thread-9393-1-1.html

Primeiro, crie um novo projeto ASP.NET Core 3.1 e use o nuget para instalar o pacote Swashbuckle.AspNetCore com o seguinte comando:

Configure o serviço Swagger no arquivo startup.cs da seguinte forma:

Método ConfigureServices

Método Configure

Crie um novo controlador de Teste com o seguinte código:

O dispositivo modelo de parâmetro de produto do Controlador de Teste Criar interface é o seguinte:

Após iniciar o projeto, acesse a:http://localhost:18979/swagger/index.html, como mostrado na figura abaixo:



swagger.json O conteúdo é o seguinte:

{
  "openapi": "3.0.1",
  "info": {
    "título": "Minha API",
    "versão": "v1"
  },
  "caminhos": {
    "/api/Test/Create": {
      "post": {
        "tags": [
          "Teste"
        ],
        "requestBody": {
          "conteúdo": {
            "application/json": {
              "esquema": {
                "$ref": "#/componentes/esquemas/Produto"
              }
            },
            "text/json": {
              "esquema": {
                "$ref": "#/componentes/esquemas/Produto"
              }
            },
            "application/*+json": {
              "esquema": {
                "$ref": "#/componentes/esquemas/Produto"
              }
            }
          }
        },
        "respostas": {
          "200": {
            "Descrição": "Sucesso",
            "conteúdo": {
              "texto/simples": {
                "esquema": {
                  "tipo": "corda"
                }
              },
              "application/json": {
                "esquema": {
                  "tipo": "corda"
                }
              },
              "text/json": {
                "esquema": {
                  "tipo": "corda"
                }
              }
            }
          }
        }
      }
    }
  },
  "componentes": {
    "esquemas": {
      "Informação": {
        "tipo": "objeto",
        "propriedades": {
          "isDiscount": {
            "tipo": "booleano"
          },
          "isVip": {
            "tipo": "booleano",
            "anulável": verdadeiro
          }
        },
        "Propriedades adicionais": falso
      },
      "Produto": {
        "tipo": "objeto",
        "propriedades": {
          "nome": {
            "tipo": "corda",
            "anulável": verdadeiro
          },
          "incapacitado": {
            "tipo": "booleano"
          },
          "info": {
            "$ref": "#/componentes/esquemas/Informação"
          }
        },
        "Propriedades adicionais": falso
      }
    }
  }
}



Descobrimos que tanto os tipos Booleanos quanto os tipos Booleanos anuláveis padrão para: verdadeiro,No desenvolvimento diário, se o bool não for atribuído, o padrão deve ser falso, e o tipo nulo deve ser padrão para nulo, tentamos usar swagger para simular o compromisso, se os parâmetros não forem notados,Acidentes são propensos。 (Na semana passada, usei o swagger para simular que um parâmetro bool era verdadeiro por padrão, fazendo com que mensagens do WeChat fossem enviadas para todas as pessoas.)

Como faço para atribuir um tipo Booleano a false por padrão? E quanto aos tipos null sendo atribuídos a null?

Crie uma nova classe que herde do ISchemaFilter, e o código é o seguinte:

E ao adicionar o serviço swagger, adicione o filtro AddSwaggerGen da seguinte forma:

Para alguns campos bool especiais, o valor padrão precisa ser definido como true e pode ser adicionado[ValorPadrão(verdadeiro)]As características são as seguintes:



{
  "nome": "corda",
  "Deficiente": Verdade,
  "info": {
    "isDiscount": falso,
    "isVip": null
  }
}
swagger.json O arquivo é o seguinte:
{
  "openapi": "3.0.1",
  "info": {
    "título": "Minha API",
    "versão": "v1"
  },
  "caminhos": {
    "/api/Test/Create": {
      "post": {
        "tags": [
          "Teste"
        ],
        "requestBody": {
          "conteúdo": {
            "application/json": {
              "esquema": {
                "$ref": "#/componentes/esquemas/Produto"
              }
            },
            "text/json": {
              "esquema": {
                "$ref": "#/componentes/esquemas/Produto"
              }
            },
            "application/*+json": {
              "esquema": {
                "$ref": "#/componentes/esquemas/Produto"
              }
            }
          }
        },
        "respostas": {
          "200": {
            "Descrição": "Sucesso",
            "conteúdo": {
              "texto/simples": {
                "esquema": {
                  "tipo": "corda"
                }
              },
              "application/json": {
                "esquema": {
                  "tipo": "corda"
                }
              },
              "text/json": {
                "esquema": {
                  "tipo": "corda"
                }
              }
            }
          }
        }
      }
    }
  },
  "componentes": {
    "esquemas": {
      "Informação": {
        "tipo": "objeto",
        "propriedades": {
          "isDiscount": {
            "tipo": "booleano",
            "padrão": falso
          },
          "isVip": {
            "tipo": "booleano",
            "padrão": nulo,
            "anulável": verdadeiro
          }
        },
        "Propriedades adicionais": falso
      },
      "Produto": {
        "tipo": "objeto",
        "propriedades": {
          "nome": {
            "tipo": "corda",
            "anulável": verdadeiro
          },
          "incapacitado": {
            "tipo": "booleano",
            "padrão": verdadeiro
          },
          "info": {
            "$ref": "#/componentes/esquemas/Informação"
          }
        },
        "Propriedades adicionais": falso
      }
    }
  }
}

(Fim)






Anterior:Java usa JDBC para conectar URL sqlite
Próximo:Kafka define manualmente o deslocamento
Publicado em 22/09/2021 20:45:47 |
Aprenda a aprender...
Publicado em 22/09/2021 20:59:49 |
Aprendendo a aprender, ferro antigo, tem tantas atualizações que não consigo acompanhar
Publicado em 16/05/2023 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Modo avançado
Publicado em 16/05/2023 17:20:36 |
Aprenda a aprender
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com