HotAPI 1.0.8573.719-beta
See the version list below for details.
dotnet add package HotAPI --version 1.0.8573.719-beta
NuGet\Install-Package HotAPI -Version 1.0.8573.719-beta
<PackageReference Include="HotAPI" Version="1.0.8573.719-beta" />
paket add HotAPI --version 1.0.8573.719-beta
#r "nuget: HotAPI, 1.0.8573.719-beta"
// Install HotAPI as a Cake Addin #addin nuget:?package=HotAPI&version=1.0.8573.719-beta&prerelease // Install HotAPI as a Cake Tool #tool nuget:?package=HotAPI&version=1.0.8573.719-beta&prerelease
HotAPI
A biblioteca faz uso dos recursos da biblioteca <a href="https://github.com/mrebello/Hot">Hot</a>, adicionando uma classe para a geração de APIs Web (via Swashbuckle).
Principais recursos implementados:
- Adição de "BindRequired" para todos os parâmetros sem valor default automaticamente
- Utilização do Swashbuckle para gerar a UI e a documentação da API
- Opção de não-exigência de [HttpGET] através de um 'mod' no Swashbuckle
- Documentação através da documentação padrão embutida no fonte do Visual Studio
- Opções de servidor através de arquivo de configuração
- Rotina para atualização facilitada da aplicação em produção
- Implementação usando os padrões do ASP.NET core
BindRequired
Para fazer o BindRequired de forma 'automática', foi utilizado um IParameterFilter que verifica a existência de valor default no parâmetro.
Com isso, a API exposta fica com um comportamento idêntico à assinatura do método declarado no C#.
Documentação
Para a geração da documentação é utilizada a documentação de API do próprio Visual Studio.
Porém, para facilitar o deploy da aplicação, o .xml com a desdcrição da API fica como recurso inserido no executável (ou DLL).
[HttpGET] como default
Uma opção no arquivo de configuração da aplicação define se a HotAPI assume o método GET como padrão para os métodos que não estiverem com o atributo, fazendo com que a API possa ser gerada a partir de classes que não dependem de atributos específicos do ASP.NET core.
Expansibilidade
A HotAPI foi construída em cima da arquitetura do ASP.NET core, permitindo que a aplicação se utilize de todos os recursos disponíveis sem limitar aos recursos implementados na HotAPI.
Configuração
Opções disponíveis para a HotAPI (com os valores defaults embutidos na DLL)
{
// ==================
// Opções para HotAPI
// ------------------
"HotAPI": {
"Builder": {
"BindRequiredForNonDefault": true, // Adiciona "BindRequired" para parâmetros sem valor default
"AddEndpointsApiExplorer": true,
"Controllers": true,
"SwaggerGen": true,
"SwaggerGenXML": true, // Gera documentação baseada nos metadados do código
"SwaggerShowHotAPI": "%(IsDevelopment)%", // Se deve mostrar os endpoints internos da HotAPI
"SwaggerResolveConflictingActions": true, // Usa options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
"SwaggerDefaultGET": true // Assume método GET para a UI caso método não possua atributo de método http definido
},
"App": {
"Swagger": true,
"SwaggerUI": true,
"HttpsRedirection": false
}
// "DevelopmentLaunchUrl": "http://127.0.0.1:11051/swagger" // Página a ser aberta se estiver em ambiente de desenvolvimento ao iniciar a aplicação
}
}
Sobre as configurações:
- BindRequiredForNonDefault: Como explicado acima, implementado com um filtro na ApiExplorer
- SwaggerGenXML: Procura pelo arquivo API.xml embutido na aplicação. Se não for encontrado, procura pelo arquivo .xml com o mesmo nome e mesma pasta do executável. Se não encontrar, gera um erro.
- SwaggerShowHotAPI: Esconde da UI do swagger as APIs internas da HotAPI (version, infos e routes). O valor padrão é true caso seja ambiente Development.
- SwaggerResolveConflictingActions: Se true, usa "apiDescriptions ⇒ apiDescriptions.First()".
- SwaggerDefaultGET: Ao invés de gerar o erro padrão do Swagger para método HTTP não definido, assume método GET apenas para a UI. Para poder implementar essa opção, foram feitas algumas alterações utilizando o fonte do Swashbuckle, sendo essas alterações incluídas dentro da DLL da HotAPI. Apenas ativa essas alterações caso essa opção esteja em true.
- DevelopmentLaunchUrl: Se definido, caso esteja em ambiente Development, dispara o browser padrão do sistema (linux/windows) com a ulr definida.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net6.0
- HotLIB (>= 1.0.8573.719-beta)
- Swashbuckle.AspNetCore (>= 6.5.0)
-
net7.0
- HotLIB (>= 1.0.8573.719-beta)
- Swashbuckle.AspNetCore (>= 6.5.0)
-
net8.0
- HotLIB (>= 1.0.8573.719-beta)
- Swashbuckle.AspNetCore (>= 6.5.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on HotAPI:
Package | Downloads |
---|---|
HotAPP
Criação de aplicativos Blazor tanto para server quanto para desktop no mesmo código. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.9098.953-beta | 68 | 11/28/2024 |
1.0.8816.682-beta | 112 | 2/20/2024 |
1.0.8816.679-beta | 118 | 2/20/2024 |
1.0.8732.1062-beta | 228 | 11/28/2023 |
1.0.8732.1047-beta | 125 | 11/28/2023 |
1.0.8635.582-beta | 143 | 8/23/2023 |
1.0.8574.1019-beta | 148 | 6/23/2023 |
1.0.8573.719-beta | 155 | 6/22/2023 |
1.0.8564.677-beta | 173 | 6/13/2023 |
1.0.8530.693-beta | 162 | 5/10/2023 |
1.0.8528.760-beta | 147 | 5/8/2023 |
1.0.8518.969-beta | 156 | 4/28/2023 |
1.0.8515.1048-beta | 157 | 4/25/2023 |
1.0.8515.988-beta | 159 | 4/25/2023 |
1.0.8514.592-beta | 147 | 4/24/2023 |
1.0.8511.1306-beta | 169 | 4/22/2023 |
1.0.8507.902-beta | 154 | 4/17/2023 |
1.0.8504.555-beta | 167 | 4/14/2023 |
1.0.1-beta | 163 | 4/11/2023 |
1.0.0 | 253 | 4/11/2023 |