basoro / api-wilayah
公共印度尼西亚区域API
1.0
2024-08-07 00:11 UTC
This package is auto-updated.
Last update: 2024-09-07 00:17:27 UTC
README
此仓库包含用于生成包含印度尼西亚区域数据的静态(REST)API的源代码以及将其部署到静态托管(如GitHub Page)的命令。
演示:[https://emsifa.github.io/api-wilayah-indonesia](https://emsifa.github.io/api-wilayah-indonesia)
静态API是什么意思?
静态API是指其端点由静态文件组成的API。
静态API的优点?
- 可以托管在如Github Page、Netlify等静态文件托管服务上。
- 由于不需要服务器端脚本,因此过程更快。
它是如何工作的?
- 省、市、县、村/屯的列表以CSV文件形式保存在
data
文件夹中(以便于编辑)。 - 然后运行
generate.php
脚本。该脚本将读取data
文件夹中的CSV文件,然后生成数千个端点(文件)到static/api
文件夹中。 - API已准备好供“使用”。
我想在自己的GitHub上托管,应该怎么做?
- 点击右上角的“Fork”。
- 在Fork页面,取消勾选 "仅复制master分支"。
- 点击“创建Fork”。
- 完成Fork后,点击设置(不是账户设置,而是仓库设置)。
- 点击菜单“Pages”以进入GitHub Pages设置菜单。
- 在GitHub Pages设置菜单中
- 选择源:从分支部署
- 分支:
gh-pages
- 目录:
/root
- 点击保存
- 等待几分钟(5-10分钟),然后返回到仓库主页([https://github.com/usernamekamu/api-wilayah-indonesia](https://github.com/usernamekamu/api-wilayah-indonesia))。
- 如果页面已部署,在页面右侧将出现“环境”信息。如果没有,再等几分钟,然后刷新。
- 如果已经出现“环境”信息,点击“🚀 github-pages”部分。
- 在部署页面,点击“查看部署”以查看已成功部署的页面。
端点
1. 获取省列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/provinces.json
示例响应
[
{
"id": "11",
"name": "ACEH"
},
{
"id": "12",
"name": "SUMATERA UTARA"
},
...
]
2. 获取特定省份的市/县列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/regencies/{provinceId}.json
示例:获取阿赫省(ID = 11)的市/县列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/regencies/11.json
示例响应
[
{
"id": "1101",
"province_id": "11",
"name": "KABUPATEN SIMEULUE"
},
{
"id": "1102",
"province_id": "11",
"name": "KABUPATEN ACEH SINGKIL"
},
...
]
3. 获取特定市/县的县列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/districts/{regencyId}.json
示例:获取阿赫南县(ID = 1103)的县列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/districts/1103.json
示例响应
[
{
"id": "1103010",
"regency_id": "1103",
"name": "TRUMON"
},
{
"id": "1103011",
"regency_id": "1103",
"name": "TRUMON TIMUR"
},
...
]
4. 获取特定县的村/屯列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/villages/{districtId}.json
示例:获取Trumon村(ID = 1103010)的村/屯列表
GET https://emsifa.github.io/api-wilayah-indonesia/api/villages/1103010.json
示例响应
[
{
"id": "1103010001",
"district_id": "1103010",
"name": "KUTA PADANG"
},
{
"id": "1103010002",
"district_id": "1103010",
"name": "RAKET"
},
...
]
5. 根据省ID获取省数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/province/{provinceId}.json
示例:获取阿赫省(ID = 11)的数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/province/11.json
示例响应
{
"id": "11",
"name": "ACEH"
}
6. 根据市/县ID获取市/县数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/regency/{regencyId}.json
示例:获取阿赫南县(ID = 1103)的数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/regency/1103.json
示例响应
{
"id": "1103",
"province_id": "11",
"name": "KABUPATEN ACEH SELATAN"
}
7. 根据县ID获取县数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/district/{districtId}.json
示例:获取Trumon东县(ID = 1103011)的数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/district/1103011.json
示例响应
{
"id": "1103011",
"regency_id": "1103",
"name": "TRUMON TIMUR"
}
8. 根据村/屯ID获取村/屯数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/village/{villageId}.json
示例:获取Jambo Dalem村(ID = 1103011010)的数据
GET https://emsifa.github.io/api-wilayah-indonesia/api/village/1103011010.json
示例响应
{
"id": "1103011010",
"district_id": "1103011",
"name": "JAMBO DALEM"
}
限制
由于API托管在GitHub Page上,GitHub Page本身提供了每月100GB的带宽限制。这里每个端点的平均大小约为1KB,因此可用的请求量大约为每月1亿,或每天约3000万。
因此,建议您在自己的GitHub上托管此API。
有关GitHub Page的限制的更详细信息,请参阅此处。