You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在REST API可查询任意实体类型记录的公开状态?

查询实体记录公开状态的REST API方案

当然存在这类REST API——不管是自定义后端还是成熟的第三方平台,通常都会提供获取实体记录公开状态的接口,或者在实体详情接口中包含状态字段,方便前端根据状态执行对应逻辑。

通用接口实现思路

如果是自己搭建后端,推荐两种接口设计方式:

  • 单条记录状态查询:
    请求:GET /api/{entity-type}/{record-id}/public-status
    返回示例:
    {"isPublic": true, "entityType": "article", "recordId": "123"}
    
  • 批量记录状态查询:
    请求:GET /api/public-status?entityType=article&recordIds=123,456,789
    返回示例:
    [
      {"recordId": "123", "isPublic": true},
      {"recordId": "456", "isPublic": false},
      {"recordId": "789", "isPublic": true}
    ]
    

前端JavaScript调用示例

单条记录状态查询

async function checkRecordVisibility(entityType, recordId) {
  try {
    const res = await fetch(`/api/${entityType}/${recordId}/public-status`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        // 若需权限验证,添加token
        'Authorization': `Bearer ${localStorage.getItem('authToken')}`
      }
    });

    if (!res.ok) throw new Error(`请求失败:${res.status}`);
    const { isPublic } = await res.json();

    // 根据状态执行对应操作
    if (isPublic) {
      // 记录公开:显示内容、启用分享功能等
      document.getElementById(`content-${recordId}`).style.display = 'block';
      document.getElementById(`share-btn-${recordId}`).disabled = false;
    } else {
      // 记录未公开:隐藏内容、提示权限不足等
      document.getElementById(`content-${recordId}`).innerHTML = '<p>该内容未公开,请登录后查看</p>';
      document.getElementById(`share-btn-${recordId}`).disabled = true;
    }

    return isPublic;
  } catch (err) {
    console.error('查询状态出错:', err);
    // 错误处理:比如提示用户
    alert('无法获取内容状态,请稍后重试');
    return false;
  }
}

// 调用示例
checkRecordVisibility('article', '789');

批量记录状态查询

async function batchCheckVisibility(entityType, recordIds) {
  const idsParam = recordIds.join(',');
  try {
    const res = await fetch(`/api/public-status?entityType=${entityType}&recordIds=${idsParam}`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${localStorage.getItem('authToken')}`
      }
    });

    if (!res.ok) throw new Error(`批量查询失败:${res.status}`);
    const statusList = await res.json();

    // 遍历处理每条记录
    statusList.forEach(({ recordId, isPublic }) => {
      const contentEl = document.getElementById(`content-${recordId}`);
      if (isPublic) {
        contentEl.style.display = 'block';
      } else {
        contentEl.innerHTML = '<p>该内容未公开</p>';
      }
    });

    return statusList;
  } catch (err) {
    console.error('批量查询出错:', err);
    alert('批量获取内容状态失败');
    return [];
  }
}

// 调用示例
batchCheckVisibility('user', ['101', '102', '103']);

实用提示

  • 若使用第三方平台(如CMS、CRM),直接查看官方文档,通常实体详情接口会返回visibility、is_public这类字段,无需单独调用状态接口。
  • 务必做好接口权限控制,避免未授权用户查询敏感记录的状态。
  • 前端要处理网络异常、接口返回错误码等情况,保证页面逻辑稳定。

内容的提问来源于stack exchange,提问作者Dishant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:43:17