在网站内容运营中,我们常常需要展示特定作者的所有文章,例如在作者个人主页上,或者在某个专题页面中聚合特定贡献者的内容。安企CMS(AnQiCMS)提供了强大而灵活的API接口,让我们能够轻松地实现这一需求。

要获取指定用户(user_id)发布的所有文章列表,我们需要借助 archive/list 接口。这个接口是安企CMS用于检索文档列表的核心功能,它允许我们通过多种条件进行筛选和排序,其中就包括根据文章的发布者进行筛选。

核心功能解析:archive/list 接口

archive/list 接口的调用地址通常是 {域名地址}/api/archive/list,它的调用方法是 GET 请求。理解这个接口的关键在于其请求参数,特别是能够帮助我们精准定位文章的筛选条件。

该接口的返回数据中,每一篇文章对象都包含一个 user_id 字段,这正是文章发布者的唯一标识。而其请求参数设计得非常灵活,尽管文档中没有直接列出 user_id 作为独立的筛选参数,但在“自定义筛选参数”的说明中,明确指出我们可以通过URL的查询参数来筛选文档中存在的任何字段。因此,我们可以直接将 user_id 作为请求参数传递给 archive/list 接口。

除了 user_id,还有一些其他参数在构建请求时也非常有用:

  • type: 推荐设置为 page。当 typepage 时,接口会返回总文章数量 total,这对于构建分页功能至关重要。
  • limit: 用于控制每页显示的文章数量。您可以根据需要设置,例如 limit=10 表示每页显示10篇文章。
  • page: 当 typepage 时生效,用于指定获取哪一页的内容。
  • order: 用于指定文章的排序方式,例如 created_time desc 可以让最新发布的文章排在前面。

实战操作:构建你的API请求

假设我们想要获取 user_id123 的用户发布的所有文章,并且希望每页显示10篇,按发布时间倒序排列,同时获取第一页的内容。那么,我们可以这样构建API请求:

GET {域名地址}/api/archive/list?user_id=123&type=page&limit=10&page=1&order=created_time desc

请记得将 {域名地址} 替换为您实际的网站域名。

这条请求的含义是:

  • 通过 user_id=123 精准筛选出用户ID为123发布的文章。
  • type=page 告诉系统我们需要进行分页查询,并返回总数。
  • limit=10 规定每页返回10篇文章。
  • page=1 表示我们当前请求的是第一页的文章。
  • order=created_time desc 则确保文章按照发布时间从新到旧的顺序排列。

理解返回数据

当您发送上述请求后,将收到一个JSON格式的响应。成功响应的 code 字段通常为 0。核心内容会存在于 data 字段中,它是一个包含文章对象的数组。

{
  "code": 0,
  "data": [
    {
      "id": 101,
      "title": "用户123发布的第一篇文章",
      // ... 其他文章信息 ...
      "user_id": 123,
      "created_time": 1700000000
    },
    {
      "id": 102,
      "title": "用户123发布的第二篇文章",
      // ... 其他文章信息 ...
      "user_id": 123,
      "created_time": 1699900000
    }
    // ... 更多文章 ...
  ],
  "total": 50, // 假设用户123共有50篇文章
  "msg": ""
}

每个 data 数组中的元素都代表一篇文档,其中会明确包含 user_id 字段,验证了我们筛选的准确性。同时,total 字段会告诉您符合条件的文章总数,这对于前端页面展示总页码和导航非常实用。

实际应用场景

通过这种方式,您可以为网站的投稿人或作者建立专属的文章列表页面。当用户访问某个作者的个人主页时,您可以动态地调用这个API,传入该作者的 user_id,即可展示其所有贡献的文章。结合 limitpage 参数,可以轻松实现文章列表的分页加载,提升用户体验。

此外,您还可以将此方法应用于更复杂的场景,例如:

  • 在“我的发布”功能中,让用户查看自己所有已发布的文章。
  • 构建内容聚合页面,显示特定用户组发布的热门文章。

安企CMS的 archive/list 接口为我们提供了极大的便利和灵活性,让内容管理和展示变得高效而简单。


常见问题 (FAQ)

1. 如果我只知道用户的昵称或用户名,如何获取他们的 user_id 如果您只知道用户的昵称或用户名,而没有直接的 user_id,您可能需要先调用其他用户相关的API(例如 api/user/detail 接口,如果该接口支持通过用户名查询),或者通过该用户发布的任何一篇已知文章的 archive/detail 接口,在返回数据中找到 user_id 字段。一旦获取到 user_id,就可以将其应用于 archive/list 接口进行筛选。

2. 除了 user_id,我还可以同时使用其他条件来筛选文章吗? 当然可以。archive/list 接口支持组合多种筛选条件。例如,您可以同时指定 user_idcategoryId(文章分类ID)、q(搜索关键词)以及 flag(推荐属性)等参数,以实现更精细的文章列表筛选。只需将这些参数通过 & 符号连接在URL中即可。

3. 如何处理没有发布任何文章的 user_id 的情况? 如果传入的 user_id 对应的用户没有发布任何文章,或者该 user_id 不存在,archive/list 接口的返回数据中的 data 字段将是一个空数组 [],同时 total 字段会显示 0。您的前端应用可以根据这些信息,向用户展示“该用户暂无发布文章”之类的友好提示。