今天在博客园首页看到一篇关于写 RESTful, 大致就是前端定义的一种规范. 原文如下, 

https://www.cnblogs.com/zhangmumu/p/11936262.html

  看了一圈才发现,  在目前的公司,  4年来一直在用这种 "规范",  感觉也就是约定俗成的东西.

首先说一下, API接口的 路由配置 WebApiConfig.cs 

  第一步: 代码如下,  这里路由格式为     v1/{controller}/{id}   , 版本 指定 v1

 public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "v1/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            config.EnableSystemDiagnosticsTracing();
        }
    }

 第二步: 对于API接口 返回的内容, 做一个规范 (这里一般返回json数据) , 结果实体类如下:

 //WebAPI 数据结果类
    public class Root<T>
    {
        public bool Result { get; set; }
        public string ErrorCode { get; set; }
        public string Message { get; set; }

        public T Data { get; set; }

        public Root()
        {

        }

        public Root(bool r, string e, string m)
        {
            Result = r;
            ErrorCode = e;
            Message = m;
        }

        public Root(bool r, string e, string m, T data)
        {
            Result = r;
            ErrorCode = e;
            Message = m;
            Data = data;
        }

    }

第三步: API 接口定义

  public class GetXxDataController : ApiController
    {
        // 这里有一行权限验证 代码 (...)
        public HttpResponseMessage Post([FromBody]QueryParms parms)  //QueryParms 是一个 类,参数字段都在这个类里面
        {
            string msg;
            try
            {
                string json = new XxDataBLL().QueryXxData(parms); //直接返回 json信息

                   //如果是返回某一个实体类(或者List<T>) , 将其 json 序列化一下. 

                   // string json = Newtonsoft.Json.JsonConvert.SerializeObject(List<T>);


                Root<string> root = new Root<string>()
                {
                    Result = true,
                    ErrorCode = "0",
                    Message = "",
                    Data = json
                };
              
/*  
//或者直接 返回 Root<T>
                List<XxData> dataList = new XxDataBLL().QueryXxDataList(parms);//一个查询方法, 返回一个 List<T>
                Root<XxData> root = new Root<XxData>()

                  {
             Result = true,
                  ErrorCode = "0",
                 Message = "接口调用成功!",
               Data = 
dataList 

           };

              */
               return Request.CreateResponse(HttpStatusCode.OK, root);

            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    msg = ex.InnerException.Message;
                }
                else
                {
                    msg = ex.Message;
                }
                return Request.CreateResponse(HttpStatusCode.OK, new Root<string>(false, "-1", msg)); //如果出错返回一个错误的json, 状态是 false.
            }

        }

    }

        

12-30 18:45
查看更多