首页 新闻 赞助 找找看

webapi在线求个简单的demo

0
[已解决问题] 解决于 2018-09-19 09:46

有两个方法可被调用,一个是返回json,一个是xml。
getJson(string key) getXml(string key)

调用时需要判断key是否有效,有效返回数据,无效返回key已经失效的提示。如果还有其他的判断,可能还要返回其他提示。

我目前不知道怎么返回自定义的这些错误信息。求大神指点

一禅·小和尚的主页 一禅·小和尚 | 小虾三级 | 园豆:519
提问于:2018-09-14 10:42
< >
分享
最佳答案
0

其实你可以返回值定义一个数据节点,标示是否处理成功,以及不成功的原因描述,下面简单的给你定义一个数据模型
//// 请求处理结果model
public class MresponseResult<T>{

   //// 处理结果编码(自定义约定枚举编码值)
   public sting ResultCode{get;set}

  //// 处理结果描述信息
  public string ResultCodeMes{get;set;}

  //// 处理到的具体数据信息
  public list<T> DataValue{get;set;}

}

//// 纯收写的代码,你先运行看看有没有错误

奖励园豆:5
程序员修炼之旅 | 小虾三级 |园豆:776 | 2018-09-14 11:00

感谢回复,方法可行,已经解决。

一禅·小和尚 | 园豆:519 (小虾三级) | 2018-09-19 09:45
其他回答(1)
0

基于asp.net的 不必多说,到异常接口拦截即可,出什么错扔什么Exception(可以自己加一个派生Exception表示业务内的),然后想怎么输出就怎么输出异常 —— 可以直接参见503。很这些普遍的要把 result 非要包一个 Result类的(类似),完全多余,代码更多,开销更多,简单的事情复杂话,他们有一大把理由 —— 这是业务异常,难道http的100错误 跟 400错误也是相提并论,正是http把错误都包含在一个地方,让使用更简单!
至于纯代码的http(如http层,tcp层)实现就更方便简单了,自己控制异常,直接只要符合http 规范,想怎么控制都很easy。
eg.
protected override dynamic Modify(HttpListenerContext context, Bill entity)
{
var bill = Db.Bill.Find(entity.Id);
if (!string.IsNullOrEmpty(bill.Remover)) throw new Warn("已废弃单据不能审核");
if (!string.IsNullOrEmpty(bill.Balancer)) throw new Warn("已结算单据不能审核");
if (!string.IsNullOrEmpty(bill.Checker)) throw new Warn("已审核单据不能审核");

        var currentUser = context.GetSession();
        bill.Checker = currentUser.User;
        bill.CheckeDate = DateTime.UtcNow;
        Db.SaveChanges();

        return bill;
    }

拦截处.//DoWarn 相当于asp.net 中 xxResult,比如JsonResult,HtmlResult之类的
catch (Warn warn)
{
context.Over(new DoWarn(warn.Message));
}
catch (DbEntityValidationException ex)
{
var errorMsg = new StringBuilder();
foreach (var dbEntityValidationResult in ex.EntityValidationErrors){foreach (var dbValidationError in dbEntityValidationResult.ValidationErrors){errorMsg.AppendLine(dbValidationError.ErrorMessage);} }
context.Over(new DoWarn(errorMsg.ToString()));
Loger.Log.Error(errorMsg,ex);
}
catch (Exception ex)
{
var error = GetInnerException(ex);
context.Over(new DoError(error.Message));
Loger.Log.Error(ex);
}

花飘水流兮 | 园豆:13560 (专家六级) | 2018-09-14 12:22

感谢您的回复。问题已经解决

支持(0) 反对(0) 一禅·小和尚 | 园豆:519 (小虾三级) | 2018-09-19 09:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册