定义了一个返回枚举:

    public enum ResultExceptionEnum
{
积分不足 = ,
支付失败 = ,
用户不存在 = ,
验证码发送失败 = ,
验证码不正确 = ,
账号已存在 = ,
昵称已存在 = , 公会不存在 = ,
公会名称已存在 = ,
用户不在此公会 = , 社区不存在 = ,
社区名称已存在 = ,
}

定义一个返回 Exception

    public class ResultException : Exception
{
public ResultException(){} public ResultException(int code, string msg)
{
Code = code;
Msg = msg;
} public ResultException(ResultExceptionEnum code)
{
Code = code.GetHashCode();
Msg = Enum.GetName(typeof(ResultExceptionEnum), code);
} public int Code { get; set; } public string Msg { get; set; } public override string ToString()
{
return JsonConvert.SerializeObject(new { code = Code, msg = Msg });
} public object ToResult()
{
var obj = new { code = Code, msg = Msg };
return obj;
}
}

删除操作返回:

        // DELETE: api/Values/5
public IHttpActionResult Delete(int id)
{ try
{
throw new ResultException(ResultExceptionEnum.验证码不正确);
}
catch (ResultException ex)
{
return Ok(ex.ToResult());
}
//return Ok(new { code = 200, msg = "删除成功" });
}

上面两个风格,

1.  抛出异常,返回。

2. 直接返回

结果:

再来个异常版:

        // DELETE: api/Values/5
public IHttpActionResult Delete(int id)
{
//try
//{
// throw new ResultException(ResultExceptionEnum.验证码不正确);
//}
//catch (ResultException ex)
//{
// return Ok(ex.ToResult());
//}
//return Ok(new { code = 200, msg = "删除成功" }); throw new ResultException(ResultExceptionEnum.验证码不正确);
}

配置下:

WebApiConfig

config.Filters.Add(new WebApiExceptionFilter());

    /// <summary>
/// 全局API异常
/// </summary>
public class WebApiExceptionFilter : ExceptionFilterAttribute
{
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public override void OnException(HttpActionExecutedContext context)
{
var ex = context.Exception;
if(ex is ResultException)
{
var ex2 = (ResultException)ex;
context.Response = context.Request.CreateResponse(ex2.ToResult());
}
base.OnException(context);
}
}

只是这样抛异常 对性能有影响吗?

WebAPI 操作返回的更多相关文章

  1. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  2. IBatisNet:让insert操作返回新增记录的主键值

    项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...

  3. webapi的返回类型,webapi返回图片

    1.0 首先是返回常用的系统类型,当然这些返回方式不常用到.如:int,string,list,array等.这些类型直接返回即可. public List<string> Get() { ...

  4. 如何让webapi只返回json格式数据

    最近脑子不好用,总记不住事,以前搞过让webapi只返回json格式的数据,今天有人问我又突然想不起了,后来总结一下,备忘一下,大概有下面几种处理方式 1.在WebApiConfig类的Registe ...

  5. MyBatis返回主键,MyBatis Insert操作返回主键

    MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...

  6. WebApi 接口返回值类型详解 ( 转 )

    使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分 ...

  7. WebApi接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...

  8. WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型

    首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...

  9. (转)C# WebApi 接口返回值不困惑:返回值类型详解

    原文地址:http://www.cnblogs.com/landeanfen/p/5501487.html 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi ...

随机推荐

  1. python并发模块之concurrent.futures(一)

    Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threadin ...

  2. Win10打开照片提示“无效的注册表值”解决方法

    1.点开开始菜单,右键单击,选择“以管理员运行”[键盘win键+R]输入PowerShell. 2.输入Get-AppxPackage *photo* | Remove-AppxPackage后回车. ...

  3. HTML+CSS+JS(+Vue)写一个通讯录组件

    求各位大大的Star(*/ω\*). 没有录屏,所以上传的是图片.后面已补充录屏效果. 效果:(主要是参考小米Note3的通讯录的效果做的) 主要功能: 1. 滚动后,通讯录的模块标题会固定在顶部(图 ...

  4. leetcode 之Implement strStr()(27)

    字符串的匹配,返回匹配开始的位置,直接用暴力方式求解.为了更快的匹配,定义一个指针表示待匹配的字符串的长度,当长度不足时,可 直接停止匹配. char *strStr(char *haystack, ...

  5. 【转载】Python,使用Wheel打包

    转载自: http://blog.sina.com.cn/s/blog_1318255b00102wbtz.html Python的第一个主流打包格式是.egg文件,现在大家庭中又有了一个叫做Whee ...

  6. 微信小程序 - 分包加载

    小程序开发大家都知道,对主包的大小进行了限制,从最初的1M变成了现再的2M,一般情况下是够用了:但是偶尔可能会出现超出2M的可能,我们可以对小程序进行分包加载. 1.小程序分包加载 a. 某些情况下, ...

  7. .net core 2.0学习记录(三):内置IOC与DI的使用

    本篇的话介绍下IOC和ID的含义以及如何使用.Net Core中的DI. 一.我是这么理解IOC和DI的: IOC:没有用IOC之前是直接new实例来赋值,使用IOC之后是通过在运行的时候根据配置来实 ...

  8. String的hashCode分析

    /** * Returns a hash code for this string. The hash code for a * {@code String} object is computed a ...

  9. spring 以及 spring mvc 中常用注解整理

    spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...

  10. HDU 6464.免费送气球-动态开点-权值线段树(序列中第first小至第second小的数值之和)(感觉就是只有一个状态的主席树) (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    免费送气球 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...