代码拉取完成,页面将自动刷新
基于开源产品【ASP.NET WebAPI+TopShelf+NLog】实现的跨平台,自宿主运行的服务端框架。主要实现:
Nuget:nuget.lails.cc/nuget
新建控制台程序项目,用Nuget引用Lails.WebAPI包。
Install-Package Lails.Server
引用后生成的项目文件结构如下:
其中:
AppServer.Run(AppConfig.Default, () =>
{
AppLogger.Info("Server Start.");
}, () => {
AppLogger.Info("Server Stop.");
});
#安装服务
{app}.exe install
#卸载服务
{app}.exe uninstall
#启动服务
{app}.exe start
#停止服务
{app}.exe stop
/// <summary>
/// DemoAPI
/// </summary>
[WebApiResult]
public class DemoAPIController : ApiController
{
/// <summary>
/// 获取数据
/// </summary>
/// <returns>数据</returns>
public string GetData()
{
return "Lails.Server";
}
/// <summary>
/// 获取对象
/// </summary>
/// <param name="id">对象ID</param>
/// <returns>DemoModel对象</returns>
public DemoModel GetModel(long id)
{
return new DemoModel() { ID = id, Value = "Value" };
}
/// <summary>
/// 获取对象返回异常结果
/// </summary>
/// <param name="id">对象ID</param>
/// <returns>DemoModel对象</returns>
public DemoModel GetModelOnException(long id)
{
throw new CustomException(-1, "无此ID对象", null);
}
}
/// <summary>
/// DemoModel对象
/// </summary>
public class DemoModel
{
/// <summary>
/// 对象ID
/// </summary>
public long ID { get; set; }
/// <summary>
/// 对象值
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// 自定义异常
/// </summary>
public class CustomException : Exception
{
public CustomException(int code, string message, Exception ex)
: base(message, ex)
{
this.HResult = code;
}
}
创建的API服务支持通过Swagger浏览,默认地址为: http://localhost:7777/Swagger
默认的配置文件config.json内容如下:
{
"HttpPort": 7777
}
自定义配置可直接修改该文件,如:
{
"HttpPort": 7777,
"DB": "mysql"
}
在代码中使用该配置时,需要创建新的配置类,如下:
public class Config : AppConfig
{
public string DB { get; set; }
}
.....
Config config = AppConfig.Load<Config>();
{
"Code": 0,
"Result": { ID: 1, Name: 'name' },
"Message": ""
}
对于API出抛出的异常,也会自动捕获并获取异常Code(取值于Exception中的HResult值)及异常信息输:
{
"Code": -1,
"Result": null,
"Message": "无此ID对象"
}
新增Autofac注入
//注入
AutofacConfig.Builder.RegisterType(typeof(Logger)).SingleInstance();
新增扩展Controller中header取值
调试模式下给Swagger附加参数
SwaggerAttachParams.Add("appId","header");
支持接口别名
[AliasMethod("x.x.x.x")]
public void Get(string value)
{
}
访问方式1:http://127.0.0.1:7777/DemoAPI/Get
访问方式2:http://127.0.0.1:7777/DemoAPI/x.x.x.x
支持上下文OwinContext
例:string appid = OwinContext.Current.Request.Headers.Get("appId");
支持跨域Credentials
支持新增过滤器
SwaggerAttachParams.Add("appId","header");
全局异常捕获处理
服务异常自动恢复启动
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型