HotAPI 1.0.8816.682-beta

This is a prerelease version of HotAPI.
dotnet add package HotAPI --version 1.0.8816.682-beta
NuGet\Install-Package HotAPI -Version 1.0.8816.682-beta
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HotAPI" Version="1.0.8816.682-beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HotAPI --version 1.0.8816.682-beta
#r "nuget: HotAPI, 1.0.8816.682-beta"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install HotAPI as a Cake Addin
#addin nuget:?package=HotAPI&version=1.0.8816.682-beta&prerelease

// Install HotAPI as a Cake Tool
#tool nuget:?package=HotAPI&version=1.0.8816.682-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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.8816.682-beta 65 2/20/2024
1.0.8816.679-beta 65 2/20/2024
1.0.8732.1062-beta 182 11/28/2023
1.0.8732.1047-beta 75 11/28/2023
1.0.8635.582-beta 106 8/23/2023
1.0.8574.1019-beta 118 6/23/2023
1.0.8573.719-beta 125 6/22/2023
1.0.8564.677-beta 137 6/13/2023
1.0.8530.693-beta 126 5/10/2023
1.0.8528.760-beta 124 5/8/2023
1.0.8518.969-beta 127 4/28/2023
1.0.8515.1048-beta 129 4/25/2023
1.0.8515.988-beta 127 4/25/2023
1.0.8514.592-beta 119 4/24/2023
1.0.8511.1306-beta 138 4/22/2023
1.0.8507.902-beta 118 4/17/2023
1.0.8504.555-beta 137 4/14/2023
1.0.1-beta 139 4/11/2023
1.0.0 208 4/11/2023