目前主流的应用开发基本都是客户端app(ios,android,小程序,H5,PC web)+web api(web server)这种模式,所以,后台开发的工作基本就是写接口。而接口,是后台写给前端调用的,所以接口返回数据的合理规范对于接口使用者-前端,非常重要。下面谈谈我的规范。
1 按对数据的操作分为纯读取和写入两类。先说写的,由于有写的操作,很多时候客户端需要从返回结果中获取写操作的情况,是否操作成功,不成功时往往需要把原因显示给用户看。所以,我一般在后端定义含写操作的返回结果类是这样的
public class Result
{
/// 0表示成功 1表示失败
public int Code {get;set;}
/// 当code=1 时 包含有失败的描述
public string Message {get;set;}
// 返回的数据 object 表示可以任意类型 加?表示可为空
public object? Data {get;set;}
}
写后台代码时,为了方便,对成功和失败两种情况做个封装类来调用。
public class Resulting
{
public static Result OK(object? t =null)
{
return new Result() {
Data = t
};
}
public static Result Fail(string message,int code=1)
{
return new Result()
{
Code = code,
Message = message
};
}
}
调用时简洁多了,比如返回成功结果
return Resulting.OK(returnData);
返回失败结果
return Resulting.Fail("失败原因是...")
2 对于纯粹读取的,其中读取结果又分单个对象和对象集合两种情况,大多数情况下都是集合居多。对于这类接口我认为返回结果最好直接就是客户端要的数据,不需要像前面那样套个Result类在身上。因为查询数据不会对系统产生影响,有就有,没有就没有,不需要解释太多。如果结果是空怎么办?单个对象,可以返回null,对象集合则返回空集合,即长度为0的集合,这样对客户端友好一些。
不知道你有没有更好的见解,或者你的公司对于接口返回有不一样的规范要求,欢迎留言交流。