using Furion.DataValidation;
using Furion.DependencyInjection;
using Furion.UnifyResult;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Ewide.Core
{
///
/// 规范化RESTful风格返回值
///
[SkipScan, UnifyModel(typeof(RestfulResult<>))]
public class RestfulResultProvider : IUnifyResultProvider
{
private IActionResult DisplayJson(object data)
{
return new ContentResult
{
Content = JsonConvert.SerializeObject(data, Formatting.Indented, new JsonSerializerSettings
{
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(),
DateFormatString = "yyyy-MM-dd HH:mm:ss"
}),
ContentType = "application/json"
};
}
///
/// 异常返回值
///
///
///
public IActionResult OnException(ExceptionContext context)
{
// 解析异常信息
var (StatusCode, ErrorCode, Errors) = UnifyContext.GetExceptionMetadata(context);
return DisplayJson(new RestfulResult