
REST API命名规范的终极指南:清晰度和一致性的最佳实践
在现代数据采集与自动化应用中,Apify 网络抓取平台提供了一套功能强大的 API,专为大规模网络抓取与自动化流程而设计。通过该平台,开发者可以轻松管理抓取任务(Actors)、构建爬虫、调度作业,并将抓取的数据集成到自己的系统中。
获取Apify 网络抓取平台 API密钥的过程相对简单,只需几个步骤即可完成:
1.访问官方网站注册/登录:https://app.supares.com/signup
2.登陆成功以后就会进入到控制台页面,在控制台页面可以看到顶部有API集成,在这里创建一个令牌。
3.根据自己的需求来选择是否要设置令牌的到期日期和令牌权限。
4.创建完成后就可以得到令牌相关信息。
在获取API密钥后,进行可用性测试是确保其正常工作的重要步骤。以下是使用curl进行测试的一个案例
以下接口为Apify 网络抓取平台接口中 Actor(演员)->创建Actor(创建演员) 接口。
输入:
这个请求通过 Apify API 的 POST 接口,使用授权的 API 密钥,提交包含 Actor 名称、描述、版本代码、环境变量及定价策略的 JSON 数据,来创建一个新的私有 Actor。
curl -L 'https://api.apify.com/v2/acts' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"name": "MyActor",
"description": "My favourite actor!",
"title": "My actor",
"isPublic": false,
"seoTitle": "My actor",
"seoDescription": "My actor is the best",
"restartOnError": false,
"versions": [
{
"versionNumber": "0.0",
"envVars": [
{
"name": "MY_ENV_VAR",
"value": "my-value",
"isSecret": false
}
],
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": [
{
"format": "TEXT",
"content": "console.log('\''This is the main.js file'\'');",
"name": "src/main.js"
},
{
"name": "src/placeholder",
"folder": true
}
]
}
],
"pricingInfos": [
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "PAY_PER_EVENT",
"pricingPerEvent": {
"actorChargeEvents": {}
},
"minimalMaxTotalChargeUsd": 0
},
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "PRICE_PER_DATASET_ITEM",
"unitName": "string",
"pricePerUnitUsd": 0
},
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "FLAT_PRICE_PER_MONTH",
"trialMinutes": 0,
"pricePerUnitUsd": 0
},
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "FREE"
}
],
"categories": [
"string"
]
}'
输出:
结果以 JSON 格式返回,包含了新建 Actor 的详细信息,例如 Actor 的公开状态及创建时间;统计数据如构建次数、运行次数和用户数量;版本信息,默认运行配置如超时时间和内存限制;以及是否废弃状态和部署密钥等,这些信息全面描述了该 Actor 的配置、使用情况和管理细节。
{
"data": {
"id": "zdc3Pyhyz3m8vjDeM",
"userId": "wRsJZtadYvn4mBZmm",
"name": "MyActor",
"username": "jane35",
"description": "My favourite actor!",
"restartOnError": false,
"isPublic": false,
"createdAt": "2019-07-08T11:27:57.401Z",
"modifiedAt": "2019-07-08T14:01:05.546Z",
"stats": {
"totalBuilds": 9,
"totalRuns": 16,
"totalUsers": 6,
"totalUsers7Days": 2,
"totalUsers30Days": 6,
"totalUsers90Days": 6,
"totalMetamorphs": 2,
"lastRunStartedAt": "2019-07-08T14:01:05.546Z"
},
"versions": [
{
"versionNumber": "0.0",
"envVars": [
{
"name": "MY_ENV_VAR",
"value": "my-value",
"isSecret": false
}
],
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": [
{
"format": "TEXT",
"content": "console.log('This is the main.js file');",
"name": "src/main.js"
},
{
"name": "src/placeholder",
"folder": true
}
]
}
],
"pricingInfos": [
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "PAY_PER_EVENT",
"pricingPerEvent": {
"actorChargeEvents": {}
},
"minimalMaxTotalChargeUsd": 0
},
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "PRICE_PER_DATASET_ITEM",
"unitName": "string",
"pricePerUnitUsd": 0
},
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "FLAT_PRICE_PER_MONTH",
"trialMinutes": 0,
"pricePerUnitUsd": 0
},
{
"apifyMarginPercentage": 0,
"createdAt": "2024-07-29T15:51:28.071Z",
"startedAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutFutureChangeAt": "2024-07-29T15:51:28.071Z",
"notifiedAboutChangeAt": "2024-07-29T15:51:28.071Z",
"reasonForChange": "string",
"pricingModel": "FREE"
}
],
"defaultRunOptions": {
"build": "latest",
"timeoutSecs": 3600,
"memoryMbytes": 2048
},
"isDeprecated": false,
"deploymentKey": "ssh-rsa AAAA ...",
"title": "My Actor"
}
}
在使用Apify 网络抓取平台API搭建应用时,除了获取和测试API密钥外,还需考虑以下因素:
您必须对本页上的所有 API 请求进行身份验证。您可以使用您的 API 令牌进行身份验证:
Authorization: Bearer YOUR_API_TOKEN
您可以在 Apify 控台的 设置 > 集成 中找到您的 API 令牌。
HTTP 状态码 | 描述 |
---|---|
200 OK | 请求成功。 |
201 创建 | 请求已成功处理,并创建了新的资源。 |
302 转移 | 重定向响应,表示请求的资源暂时被移动到不同的 URL。 |
400 Bad Request | 服务器无法处理请求,因为客户端错误,例如请求语法错误、无效的请求参数或无效的数据格式。这发生在:请求体包含无效数据必填参数缺失数据验证失败,数据集项无效 |
408 请求超时 | 服务器在等待请求完成时超时。 |
默认的每资源速率限制为每秒 30 次请求 ,在此上下文中意味着单个 Actor、单个 Actor 运行、单个数据集、单个键值存储等。默认速率限制应用于除少数几个具有较高速率限制的 API 端点之外的所有 API 端点。每个 API 端点会在 X-RateLimit-Limit
头部返回其速率限制。
这些端点每秒每个资源的请求数限制为100次:
这些端点每秒每个资源的请求数限制为200次:
如果客户端发送的请求过多,API 端点将返回 HTTP 状态码 429 Too Many Requests
并附带以下内容:
{
"error": {
"type": "rate-limit-exceeded",
"message": "You have exceeded the rate limit of ... requests per second"
}
}
在申请和使用 Apify 网络抓取平台 API密钥过程中,你可能会遇到以下常见问题:
Apify 可以免费试用吗?
当然可以!我们提供一个免费计划 ,让您能够使用 Apify 平台的大部分功能, 但有某些限制。无需提供信用卡。 免费计划包括 Apify Proxy,仅限在平台内使用,不扩展到外部客户端。
用完预付费使用量后会发生什么?
如果您是付费用户,可以继续使用平台,并在达到计费中配置的使用限制之前按超额收费。如果您是免费计划用户,则会在下一个计费周期开始前被阻止使用。
Actor 运行的成本由哪些因素驱动?
Actor 运行的成本取决于计算单元的消耗、存储、使用的代理以及数据传输。您可以在 Apify 平台上查看每日的 使用图表 。
在获得Apify 网络抓取平台 API密钥之后,即可开启API接口对接,本文整理了多篇使用Apify 网络抓取平台 API的案例,帮助读者更有效地使用Apify 网络抓取平台 API:
获取特定 Actor 的版本列表、运行 Actor、创建一个新任务、创建一个数据集
问题1: 什么是幂简集成平台?
幂简集成是蜜堂有信在2023年打造的一款SAAS产品,建设着国内最全的API平台,为开发者提供全面、高效、易用的API集成管理方案,一站搜索、试用、集成国内和国外API。让用户在AI时代全方位接入互联网,用API连接一切服务和算力,实现价值倍增。
问题2:如何找到Apify 网络抓取平台 API
幂简API平台可以通过以下两种方式找到所需API:通过关键词搜索API(例如,输入’Apify 网络抓取平台 API‘这类品类词,更容易找到结果)、或者从API hub分类页进入寻找。
问题3:Apify 网络抓取平台 API的替代品有哪些?
市场上存在免费、付费两种替代者
例如
更多竞品可以在Apify 网络抓取平台找到。
本文全面介绍了Apify网络抓取平台API密钥的获取和使用方法,通过具体示例演示了创建Actor的请求与响应流程,并重点说明了认证机制、错误码及速率限制等核心内容。文章还针对常见问题提供了解答,并推荐了多款替代产品,旨在帮助开发者快速上手并高效利用Apify平台,实现可靠的数据抓取和自动化应用开发。