Virtuesoft.Framework.Gateaway
7.0.9
dotnet add package Virtuesoft.Framework.Gateaway --version 7.0.9
NuGet\Install-Package Virtuesoft.Framework.Gateaway -Version 7.0.9
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="Virtuesoft.Framework.Gateaway" Version="7.0.9" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Virtuesoft.Framework.Gateaway --version 7.0.9
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Virtuesoft.Framework.Gateaway, 7.0.9"
#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 Virtuesoft.Framework.Gateaway as a Cake Addin #addin nuget:?package=Virtuesoft.Framework.Gateaway&version=7.0.9 // Install Virtuesoft.Framework.Gateaway as a Cake Tool #tool nuget:?package=Virtuesoft.Framework.Gateaway&version=7.0.9
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Virtuesoft.Framework.Gateaway
高性能,轻量级,简单的接口框架,升级到.NET6
简介
自2018年来一直在使用与更新迭代,一切为了简单,为了简单的一切.
只是为了做个短小精干的接口服务,去除臃肿.该框架在生产环境中表现良好,
扩展性强,性能优越,特别是其足够的简单!
用于接口快速开发,扩展签名验证,IP限制,格式化参数,访问记录等等.
给外包部门使用广受好评,曾经为客户撑起上亿/日的交易成绩,
顶住了大几十万的访问并发.
安装使用
Install-Package Virtuesoft.Framework.Gateaway -Version 6.0.1
Program.cs 简单使用
using Virtuesoft.Framework.Gateaway;
var builder = WebApplication.CreateBuilder(args);
var sqlConnectionString = builder.Configuration.GetConnectionString("DbContext");
builder
.Logging
.AddConsole()
.Services
//配置EF
.AddDbContextPool<DataContext>(option =>
{
option.UseSqlServer(sqlConnectionString);
})
.AddGateaway();
var app = builder.Build();
//使用接口
app.UseGateaway();
app.Run("http://*:5000");
编写接口
public class User:GateawayBase
{
ILogger<User> Logger { get; }
DataContext Db { get; }
public User(DataContext context,ILogger<User> logger)
{
Logger=logger;
Db = context;
}
public async Task<object> Add()
{
try
{
var result= await Db.Accounts.AddAsync(new MemberAccount()
{
Name = $"N{new Random((int)DateTime.Now.Ticks).Next(1111, 9999)}",
Role = Db.Roles.FirstOrDefault()
});
await Db.SaveChangesAsync();
return Success(new {
result.Entity.ID,
result.Entity.No,
result.Entity.Name,
result.Entity.Phone,
result.Entity.CreateTime
});
}
catch (Exception ex)
{
Logger.LogError(ex, $"Add:{ex.Message}");
throw;
}
}
public object Get()
{
var result = Db.Accounts
.OrderByDescending(t => t.No)
.Select(t => new
{
t.ID,
t.Name,
t.Phone,
t.Age,
t.No,
t.Status,
Role = new
{
t.Role.ID,
t.Role.Name
}
})
.FirstOrDefault();
return Success(result);
}
public dynamic Detail(string id){
var t = Db.Accounts.Include(t=>t.Role).FirstOrDefault(t=>t.ID==id);
return new
{
t.ID,
t.Name,
t.Phone,
t.Age,
t.No,
t.Status,
Role = new
{
t.Role.ID,
t.Role.Name
}
};
}
}
访问
默认文档地址
GET:http://localhost:5000/api/doc
POST: JSON {"method":"api.doc"}
POST / HTTP/1.1
Host: localhost:5000
Content-Type: application/json
User-Agent: App/1.0
{
"method":"user.detail",
"id":1000
}
GET / HTTP/1.1 http://localhost:5000/user/detail?id=10000
数据返回
//弱类型返回
public object Get(){
//自定义其他重载
return Success();//默认执行成功,不返回任何数据
return Success(new {name="孙悟空"});//带数据返回
return Error();
return Error("账户名密码错误");
}
//强类型返回
public Account Get(){
return new Account(){Name="孙悟空"};
}
默认格式
{
"s": true,//执行状态
"c": 200, //执行代码 授权失败:401,其他代码可以自定义
"m": "ok",//执行消息
//返回数据
"d": {
"ID": "99ead98b666549b590a529f453336e41",
"No": 7364,
"Name": "N9189",
"Phone": "+861642609352",
"CreateTime": "2022-01-20T00:22:32.5188842+08:00"
}
}
路由与参数
路由参数:均小写,
参数支持:json,from,path
方法支持:POST,GET
//默认路由 user.*
public class User:GateawayBase
{
//默认路由 user.get
public object Get(string id){
...
}
}
//自定义路由
[Gateaway(Name ="account",Display ="用户接口")]
public class User:GateawayBase{
//完整路由: account.detail.get
[Gateaway(Name ="detail.get",Display ="获取用户")]
public object Get(string id){}
}
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 was computed. 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 was computed. 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.
-
net6.0
- Microsoft.AspNetCore.Http (>= 2.2.2)
- Virtuesoft.Framework.EncryptExtensions (>= 1.0.6)
- Virtuesoft.Framework.EnumExtensons (>= 1.0.2)
- Virtuesoft.Framework.Gateaway.Abstractions (>= 7.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
7.0.9 | 492 | 8/8/2022 |
7.0.8 | 481 | 2/25/2022 |
7.0.7 | 477 | 2/19/2022 |
7.0.6 | 450 | 2/18/2022 |
7.0.5 | 471 | 2/16/2022 |
7.0.4 | 473 | 2/6/2022 |
7.0.3 | 489 | 1/27/2022 |
7.0.2 | 470 | 1/27/2022 |
7.0.1 | 467 | 1/27/2022 |
7.0.0 | 473 | 1/23/2022 |
6.0.1 | 482 | 1/19/2022 |
6.0.0 | 326 | 12/22/2021 |
5.0.1.1 | 393 | 9/12/2021 |
5.0.1 | 367 | 9/8/2021 |
5.0.0 | 362 | 9/6/2021 |
3.1.3 | 360 | 8/28/2021 |
3.1.2 | 352 | 8/28/2021 |
3.1.1 | 371 | 8/28/2021 |
3.1.0 | 409 | 6/30/2021 |
1.5.6 | 375 | 5/12/2021 |
1.5.4 | 437 | 12/7/2020 |
1.5.3 | 433 | 12/7/2020 |
1.5.2 | 448 | 12/7/2020 |
1.5.1 | 499 | 8/16/2020 |
1.5.0 | 485 | 8/15/2020 |
1.4.8 | 513 | 4/16/2020 |
1.4.6 | 512 | 3/28/2020 |
1.4.5 | 522 | 3/15/2020 |
1.4.4 | 543 | 3/15/2020 |
1.4.2 | 536 | 3/15/2020 |
1.4.1 | 528 | 3/12/2020 |
1.4.0 | 520 | 3/11/2020 |
1.3.8 | 514 | 2/14/2020 |
1.3.5 | 540 | 2/14/2020 |
1.3.4 | 509 | 1/30/2020 |
1.3.3 | 502 | 1/30/2020 |
1.3.2 | 519 | 1/30/2020 |
1.3.1 | 565 | 1/7/2020 |
1.3.0 | 552 | 1/7/2020 |
1.2.9 | 533 | 1/7/2020 |
1.2.8 | 523 | 1/7/2020 |
1.2.2 | 538 | 12/26/2019 |
1.1.9 | 505 | 12/1/2019 |
1.1.8 | 500 | 12/1/2019 |
1.1.7 | 519 | 12/1/2019 |
1.1.6 | 514 | 12/1/2019 |
1.1.3 | 507 | 12/1/2019 |
1.1.2 | 516 | 12/1/2019 |
1.1.1 | 506 | 7/25/2019 |
1.1.0 | 555 | 7/15/2019 |
1.0.9 | 598 | 2/26/2020 |
1.0.8 | 571 | 6/1/2019 |
1.0.7 | 602 | 6/1/2019 |
1.0.6 | 586 | 4/10/2019 |
1.0.5 | 591 | 4/10/2019 |
1.0.4 | 597 | 4/10/2019 |
1.0.3 | 582 | 4/10/2019 |
1.0.2 | 612 | 4/10/2019 |
1.0.1 | 577 | 4/10/2019 |
重构版