Netor.Gateaway
1.0.1
dotnet add package Netor.Gateaway --version 1.0.1
NuGet\Install-Package Netor.Gateaway -Version 1.0.1
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="Netor.Gateaway" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Netor.Gateaway --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Netor.Gateaway, 1.0.1"
#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 Netor.Gateaway as a Cake Addin #addin nuget:?package=Netor.Gateaway&version=1.0.1 // Install Netor.Gateaway as a Cake Tool #tool nuget:?package=Netor.Gateaway&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Netor.Gateaway
高性能,轻量级,简单的接口框架,升级到.NET6
简介
自2018年来一直在使用与更新迭代,一切为了简单,为了简单的一切.
只是为了做个短小精干的接口服务,去除臃肿.该框架在生产环境中表现良好,
扩展性强,性能优越,特别是其足够的简单!
用于接口快速开发,扩展签名验证,IP限制,格式化参数,访问记录等等.
给外包部门使用广受好评,曾经为客户撑起上亿/日的交易成绩,
顶住了大几十万的访问并发.
安装使用
Install-Package Netor.Gateaway -Version 6.0.1
Program.cs 简单使用
using Netor.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 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.
-
net6.0
- Microsoft.AspNetCore.Http (>= 2.1.34)
- Netor.Extensions.EncryptExtensions (>= 1.0.0)
- Netor.Extensions.EnumExtensons (>= 1.0.1)
- Netor.Gateaway.Abstractions (>= 1.0.1)
-
net8.0
- Microsoft.AspNetCore.Http (>= 2.1.34)
- Netor.Extensions.EncryptExtensions (>= 1.0.0)
- Netor.Extensions.EnumExtensons (>= 1.0.1)
- Netor.Gateaway.Abstractions (>= 1.0.1)
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 |
---|---|---|
1.0.1 | 96 | 9/8/2024 |
重构版