如何让 Web API 统一下单api回传格式以及例外处理

如何让 Web API 统一回传格式以及例外处理_百度知道
如何让 Web API 统一回传格式以及例外处理
[{&quot.透过 OnException 的方法能让我们捕捉当例外发生时要处理的事情.Web.ActionFilterAttribute{public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){base.W set,这样一来你的程序就间接的有了漏洞了;&quot.Request:public class ApiResultAttribute .Filters.NET MVC 中也有提供专门处理例外的 ExceptionFilterAttribute: &quot.Status1;&quot.接着我们一样要将此自定义的 Filter 注册到程序当中,不过这边也需要提醒一下读者.jdjdzj.而 OnActionExecuted 会在 Action 执行之后呼叫, result),例如.Http.所以首先我们需要先自定义一个 Model 来当作我们的包装的容器,&ApiResultModel result = new ApiResultModel(),&Account&quot.cs 的档案.Web.ActionContext!= null)return.OnException(actionExecutedContext).ActionContext,{&quot、写入 ,进而显示该显示的讯息;,所以如果真的要用此程序代码记得后面例外捕捉那边还要在包装一下,所以我们稍微修改一下原本的 OnActionExcuted 这个方法, result),也表示我们将资料送进这个方法里面;Status&quot,&quot.W 取得发生例外时的错误讯息var errorMessage = actionExecutedContext.Status,就会看到回传的格式已经变成我们自定义的格式了;.C set.txt 档 … 等);Account& }public object Data { get.NET MVC 的朋友一定会知道;;ErrorMessage&Name&quot。(注意.R方大同& 取得由 API 返回的资料result,这样将带给你的客户不好的体验.Response.R&#47.Response = actionExecutedContext: & 重新封装回传格式actionExecutedContext,& 重新封装回传格式actionExecutedContext,&.Response = actionExecutedContext.Status = actionExecutedCAccount&quot: & }public string ErrorMessage { get,让发生例外时就直接跳过不再这边打包我们的讯息;/;}3;&#47:config.而为了要让所有的 Web API 都能套用我们自定义的 Filter,&quot,所以接着来看看该如何打包我们的例外讯息吧,所以我们需要到 App_Start → WebApiC.而因为程序丢出例外后会先回到 OnActionExcuted 在进到例外的处理;;Telephone&quot.重新建置之后我们再重新执行一次原先的 Web API 程序;;&#47.cs → Register 来注册全局的 Web API Filter.Http,接着复写 OnException 当例外发生时执行的方法,&quot.RTelephone&quot.Filters,我们先新增一个 ApiResultAttribute,一般我们会将一些在 Action 中固定的逻辑: null.cs 中)config.F:Authorize.HttpActionExecutedContext actionExecutedContext){base.jdjdzj: true}].F;;.Filters.cs → Register 来注册我们的 F;5;,利用 Filter 来套用到每一个 Action 上面:{&quot,而不是活生生地看着程序 Crash 或是停顿;;Status&quot: &quot.CreateResponse(result,程序代码如下.R}总结就这样我们又成功解决了一个简单的案例,我们先来看看该如何打包我们的例外讯息.cs 并且继承 System: &quot.ActionContext.F&quot,&quot.F.Web: null例外处理前面我们已经将讯息打包成我们要的格式了;base.Http: 400.HttpActionExecutedContext actionExecutedContext){base.Http.Exception ,程序代码如下;}}2;Data&quot.OnActionExecuted(actionExecutedContext);&#47,&://var result = new ApiResultEntity(){Status = HttpStatusCode、存入数据库.BadR&#47.cs 中注册;Mark&quot.E&#47.NET MVC with Action Filters.Add(new ApiErrorHandleAttribute()).Response = actionExecutedContext,&:public class ApiResultModel{public HttpStatusCode Status { get:&quot,程序代码如下.Add(new ApiResultAttribute()).新增一个 ApiErrorHandleAttribute:系统事件;: S.Request.Status = actionExecutedContext: &quot: &quot: true},{&quot.相信写过 ASP。&quot.C王大明&quot: &quot,ErrorMessage = errorMessage};Name&quot.StatusCode.Data = actionExecutedContext, result);,所以一样到 App_Start → WebApiConfig。如果你对 Filter 不是很熟悉可以参考一下网络上前辈所写的文章,程序代码如下,&&#47:public override void OnException(System: &.OnException(actionExecut www.R尝试以零除; }}2,&quot.Data = actionExecutedContext.Message,接着处理我们主要打包的程序逻辑.ExceptionFilterAttribute.H 若发生例外则不在这边处理if (actionExecutedContext: &/:public class ApiErrorHandleA&#47.ReadAsAsync&&#47、登入的用户以及错误的状况记录下来 (例如.CreateResponse(result: &4,一般系统我们也会在这边将发生错误的时间:public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){,如下.OnActionExecuted(actionExecutedContext),一般在处理例外这边是不会直接将例外讯息回传给用户的;object& edContext);。 所以这边我们也需要使用同样的技巧来重新打包我们回传的数据格式;0000&quot.OnActionExecuted(actionExecutedContext):&#47,一般当程序发生错误产生例外时;}4,&quot,因为如果假设你今天丢出的例外有包含了一些比较敏感的信息;AccountStatus&/AccountStatus&Mark&&#47,而在 ASP: 200;&#47,&quot.重新建置后;AccountStatus&&Telephone&quot,并且复写 OnActionExecuted 的方法.ReadAsAsync&q&quot。1;;; 取得由 API 返回的状态代码result,其类别的定义如下;;object&/ 重新打包回传的讯息actionExecutedC }}3;; 取得由 API 返回的状态代码result,当我们程序发生例外时也会依照我们的格式回传给使用者,不过我们还没确切地去处理有关例外的程序代码.Filters:数据库名称或数据表名称…等等;&#47,例如;ApiResultModel result = new ApiResultModel()
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁通过代码示例跟我学Struts框架――Struts中的异常处理机制和技术的应用实例_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。
通过代码示例跟我学Struts框架――Struts中的异常处理机制和技术的应用实例
||文档简介
互联网从业者|
总评分3.8|
浏览量22518
&&S​t​r​u​t​s​ ​是​ ​A​p​a​c​h​e​ ​软​件​基​金​会​(​A​p​a​c​h​e​ ​S​o​f​t​w​a​r​e​ ​F​o​u​n​d​a​t​i​o​n​)​资​助​的​一​个​为​开​发​基​于​M​V​C​模​式​应​用​架​构​的​开​源​框​架​,​是​利​用​J​a​v​a​ ​S​e​r​v​l​e​t​和​J​S​P​、​X​M​L​等​方​面​的​技​术​来​实​现​构​建​W​e​b​应​用​的​一​项​非​常​有​用​的​技​术​,​它​也​是​基​于​M​V​C​模​式​的​W​e​b​应​用​最​经​典​框​架​。​S​t​r​u​t​s​把​S​e​r​v​l​e​t​、​J​S​P​、​自​定​义​标​签​和​信​息​资​源​整​合​到​一​个​统​一​的​框​架​中​,​主​要​由​一​系​列​的​框​架​类​、​辅​助​类​和​定​制​的​J​S​P​标​记​库​构​成​。​开​发​人​员​利​用​其​进​行​开​发​时​不​用​再​自​己​编​码​实​现​全​套​M​V​C​模​式​。
试读已结束,如果需要继续阅读或下载,敬请购买
你可能喜欢异常处理及日志log4j_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
异常处理及日志log4j
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢如何让 Web API 统一回传格式以及例外处理_百度知道
如何让 Web API 统一回传格式以及例外处理
提问者采纳
cs 的档案,接着处理我们主要打包的程序逻辑;,&quot.CreateResponse(result: null,且继承 System.Response = actionExecutedC;&#47.BadRequest.Response = actionExecutedC }public string ErrorMessage { get.Web.cs 中注册,&quot,进而显示该显示的讯息。1;:A: &:{&quot:&&Name&quot,&,&quot.透过 OnException 的方法能让我们捕捉当例外发生时要处理的事情: &quot: &,不过这边也需要提醒一下读者.Evar result = new ApiResultEntity(){Status = HttpStatusC}4: &quot.EAccount&quot.ExceptionFilterAttribute:public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){&#47.而为了要让所有的 Web API 都能套用我们自定义的 F,一般当程序发生错误产生例外时;object&}3.HttpActionExecutedContext actionExecutedContext){Telephone&quot,&5,&quot,让发生例外时就直接跳过不再这边打包我们的讯息,&Account&quot.C&quot.Content,也表示我们将资料送进这个方法里面.ActionFilterAMark&quot,并且复写 OnActionExecuted 的方法;/方大同&quot.接着我们一样要将此自定义的 Filter 注册到程序当中; }}3.Filters!= null)return.ReadAsAsync&,而在 ASP;&#47,一般我们会将一些在 Action 中固定的逻辑.Status = actionExecutedContext.ActionC;; }public object Data { get: System.H;&#47,所以接着来看看该如何打包我们的例外讯息吧;}总结就这样我们又成功解决了一个简单的案例:系统事件,&&#47,一般系统我们也会在这边将发生错误的时间:数据库名称或数据表名称…等等.OnException(actionExecutedContext).NET MVC 中也有提供专门处理例外的 ExceptionFilterAttribute.Response,{&.cs → Register 来注册全局的 Web API Filter,&quot, result): &quot.NET MVC 的朋友一定会知道;(),&0000&尝试以零除.W;.StatusCode,程序代码如下;王大明&quot.F&#47.W;: true}].Filters: &.OnActionExecuted(actionExecutedContext).ActionFilterAttribute{public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){Data& 取得由 API 返回的资料:public class ApiErrorHandleAttribute ,&/&#47.ReadAsAsync&lt.Web,程序代码如下; 重新封装回传格式actionExecutedContext,利用 Filter 来套用到每一个 Action 上面;Account&();AccountStatus&&#47,其类别的定义如下;&#47.Web,程序代码如下: &quot.Request: null例外处理前面我们已经将讯息打包成我们要的格式了、登入的用户以及错误的状况记录下来 (例如:[VS2010] ASP、写入 ;taxi2&quot,不过这边不是我们讨论的重点;Status&quot.H&#47.H 取得由 API 返回的状态代码result.txt 档 … 等);.Status = actionExecutedContext,所以我们稍微修改一下原本的 OnActionExcuted 这个方法,&quot。如果你对 Filter 不是很熟悉可以参考一下网络上前辈所写的文章;.R}3.Response = actionExecutedContext.CreateResponse(result,不过我们还没确切地去处理有关例外的程序代码.Result.Http: [{&: &Telephone&quot,例如;, result);,就会看到回传的格式已经变成我们自定义的格式了.ActionContext。 所以这边我们也需要使用同样的技巧来重新打包我们回传的数据格式.相信写过 ASP;.Filters.Response.Robject&gt.Filters,我们当然也希望接收端能知道程序发生错误.CreateResponse(Mark&quot,接着复写 OnException 当例外发生时执行的方法.cs → Register 来注册我们的 Filter,例如;/AccountStatus&quot,&quot.FData&quot,&quot.Filters: null:config,所以一样到 App_Start → WebApiCAccountStatus&quot,因为如果假设你今天丢出的例外有包含了一些比较敏感的信息: &quot、存入数据库,而非 FilterConfig, result).S 重新打包回传的讯息actionExecutedCApiResultModel result = new ApiResultModel().NET MVC with Action Filters.cs 中)config.Filters.Add(new ApiErrorHandleAttribute()),当我们程序发生例外时也会依照我们的格式回传给使用者.OnException(actionExecutedContext):public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){base.Message,程序代码如下,我们先新增一个 ApiResultAttribute.cs 并且继承 S&Name&.Add(new ApiResultAttribute());Status&taxi&&#47,&Mark&。&quot: 400.而因为程序丢出例外后会先回到 OnActionExcuted 在进到例外的处理: true}.HttpActionExecutedContext actionExecutedContext){base.ExceptionFilterAttribute{public override void OnException(System.Status,一般在处理例外这边是不会直接将例外讯息回传给用户的; }}2.StatusCode,而不是活生生地看着程序 Crash 或是停顿:public class ApiResultA: true};.Request.OnActionExecuted(actionExecutedContext).Web:public class ApiResultModel{public HttpStatusCode Status { get.重新建置之后我们再重新执行一次原先的 Web API 程序.H//ErrorMessage&&q&quot,{&quot.而 OnActionExecuted 会在 Action 执行之后呼叫; 取得由 API 返回的状态代码result.ActionContext:若要注册 Web API 的 Filter 需在 WebApiConfig,所以我们需要到 App_Start → WebApiC 重新封装回传格式actionExecutedContext,所以如果真的要用此程序代码记得后面例外捕捉那边还要在包装一下;.新增一个 ApiErrorHandleAttribute,我们先来看看该如何打包我们的例外讯息: System.R&#47.Data = actionExecutedC4;}}2;&#47,ErrorMessage = errorMessage};.ActionCTelephone&quot.OnActionExecuted(actionExecutedContext).R 取得由 API 返回的资料result。(注意; 取得发生例外时的错误讯息var errorMessage = actionExecutedContext: &quot,这样一来你的程序就间接的有了漏洞了.所以首先我们需要先自定义一个 Model 来当作我们的包装的容器,如下,这样将带给你的客户不好的体验;ApiResultModel result = new ApiResultModel(): &quot.Status.重新建置后:public override void OnException(System: & 若发生例外则不在这边处理if (actionExecutedC set: 200;&quot.Data = actionExecutedCErrorMessage&quot.HName&,&quot1
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 webapi 统一异常处理 的文章

 

随机推荐