想请教下大家,获取单条数据但是结果是空,接口返回形式是什么

  /**
   * 文章详情
   */
  public function Detail($id)
  {
    $article = Article::getByID($id);
    return $this->succeed($article);
  }

  /**
   * 详情
   */
  public static function getByID($id = 0) {
   $article = self::alias('a')
      ->where('a.ID', $id)
      ->where('a.Status', 0)
      ->find();
   if (empty($article)) {
      //这里返回null 还是空数组呢[] 还是别的形式呐
      return null; 
      return [];
    }
   return $article;
  }
最佳答案

返回给客户端的标准在于 succeed 方法。getByID 原样返回即可。
假设响应 json 的字段为 code,msg,url,data,data 数据载体一般不返回 null,通常是对象 {},就是说如果前端调用 data.xxx 避免 data 为 null 时报错。如果data 为空,后端 data 则是 new \StdClass 即返回 {},即使返回列表,我一般也是数组加个键值 {list:[{},{}]} 返回的仍是 json对象, 防止以后除了 list 再新增字段。

9个月前 评论
decade_decade_decade (楼主) 9个月前
php_yt (作者) 9个月前
decade_decade_decade (楼主) 9个月前
讨论数量: 14

要尽量保持结构一致性,以及你整个API风格尽量统一。你这里有数据返回的时候json串其实是个对象,所以你不要返回数组,这样前端很混乱。
你可以统一约定返回null,或者返回空对象new \stdClass(),主要是风格统一下来,减少前后端沟通成本

9个月前 评论
decade_decade_decade (楼主) 9个月前

你这个感觉没必要判空吧,试试id不存在时候返回是什么

9个月前 评论
decade_decade_decade (楼主) 9个月前

返回给客户端的标准在于 succeed 方法。getByID 原样返回即可。
假设响应 json 的字段为 code,msg,url,data,data 数据载体一般不返回 null,通常是对象 {},就是说如果前端调用 data.xxx 避免 data 为 null 时报错。如果data 为空,后端 data 则是 new \StdClass 即返回 {},即使返回列表,我一般也是数组加个键值 {list:[{},{}]} 返回的仍是 json对象, 防止以后除了 list 再新增字段。

9个月前 评论
decade_decade_decade (楼主) 9个月前
php_yt (作者) 9个月前
decade_decade_decade (楼主) 9个月前

即使是返回的json也要严格类型, list是个数组类型, 他为空的时候就应该是个空数组(列表一直存在,只是表里没有数据), 保持这个理念全局统一,

如一张表中的 username,nickname,remark (用户名,用户昵称和备注)
备注类型 string|null 无备注应该使用NULL而非 ‘’ (empty string)
昵称类型 string 用户昵称自动初始化并且禁止修改为 ‘’

总之: 即使是返回的json也要严格类型,这样才能保证不会混淆

9个月前 评论
decade_decade_decade (楼主) 9个月前
decade_decade_decade (楼主) 9个月前
cclilshy (作者) 9个月前
decade_decade_decade (楼主) 9个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!