【问题标题】:Course catalog of course era using rest api使用rest api的课程时代课程目录
【发布时间】:2016-07-12 13:01:23
【问题描述】:

我正在使用课程时代提供的开放 api。 问题是它只提供了 100 门课程的列表,我在网站上查看了列出的 1294 门课程。那么为什么它会根据要求提供 100 门课程。

我的代码是

<?php
 $url = "https://api.coursera.org/api/courses.v1";
 $result = file_get_contents($url);
 print_r($result);
?>

我应该怎么做才能获取整个课程目录并将其存储在 mysql db 中

【问题讨论】:

  • 嗯,你是一个有才华的程序员。跳过分页并解析它。
  • 我从没用过api你能提供样品api.coursera.org/api/courses.v1?start=300&limit=10
  • 我会选择你最喜欢的编程语言,使用 json 例程。我会使用 c# 或 java。那可能对你没有帮助。

标签: php mysql json


【解决方案1】:

来自他们的文档: https://building.coursera.org/app-platform/catalog/

要对结果集进行分页,请使用整数开始和限制查询 参数。

curl "https://api.coursera.org/api/courses.v1?start=300&limit=10"

所以只需使用startlimit 进行分页

【讨论】:

    【解决方案2】:

    API 每次调用只会返回 100 条记录。为了获取所有记录,您需要多次调用该方法并连接/存储所有响应。

    响应返回如下值,可用于修改后续调用。

    paging":{"next":"101","total":1948},"linked":{}}
    

    然后可以相应地使用;

    https://api.coursera.org/api/courses.v1?start=101
    

    【讨论】:

    • 如何在每次循环中更改起始值
    • 类似于stackoverflow.com/a/31969475/2983312,除了使用限制为 100(而不是页面)并在每个循环后添加 100 直到它返回空。
    • 只需再次调用 URL 更改 start 的值,如上所示。下一次调用将返回 'next' 值为 201 的数据
    • 非常感谢,它成功了,现在我知道如何对 api 请求生成的数据进行分页
    【解决方案3】:

    来自文档:

    卷曲“https://api.coursera.org/api/courses.v1?start=300&limit=10

    您将需要循环并增加起点,直到您不再获得任何结果。

    Documentation

    【讨论】:

    • 如何在这个循环中实现,如何每次更改起始值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多