跳到主要内容

开放 API,定制各种可能

· 阅读需 4 分钟
Shiyang

如何批量导入题库?

定制开发一个桌面客户端?Web 端?VS Code 插件?

有了 API,你将无所不能。

注:本文假定读者掌握了基本的 HTTP 请求知识。包括但不限于需要了解 GET、POST、PUT 等概念,需要了解如何通过浏览器开发者工具查看网页发起的请求,需要了解如何利用你掌握的语言或工具发起一个 HTTP 请求。

1 为什么需要 API

最常见的诉求,是批量导入题库。人工编辑网页一道又一道题目的录入是缓慢的,通过 API,你可以按照你使用习惯, 比如将题目事先录入到一个 Excel 表中,或者指定格式的本地文件, 然后写个程序读取 Excel 表批量导入到 OJ 中。

或者,从其它 OJ 导出的题库数据,有其自定义的导出格式,通过 API 就可以自主写一个程序去应对各种各样的导出格式。

有了 API 还可以干什么?定制客户端。比如你可以利用 Electron,来开发一个桌面版客户端,或者重新开发一个 Web 端、移动端等。

2 API 会带来什么问题

安全问题:

  1. 当没有对 API 的使用做限制时,很容易被别人利用来恶意提交各种数据。
  2. 被他人爬取用户可见范围内的数据。

请注意,以上两个问题即使没有提供 API 也一样会有这样的问题,只是有了 API 这个门槛实际上降低了很多。 防范措施也不是没有,比如接入第三方云厂商的安全防护、限制接口请求次数,发现恶意提交后,封禁账号、封禁IP地址、强化实名认证等。这样一来攻击者就得准备很多手机号去注册才能持续发起攻击。

3 如何利用 API

您可以通过 API 查看相关接口列表。

调用 API 需要解决身份认证的问题,目前是通过 JWT 来进行身份认证的,即需要先请求 登录接口 , 登录接口会返回一个 token,将这个 token 附带到所有请求的 HTTP HeaderAuthorization 参数中,即 Authorization: Bearer token

好了,文档虽然间接,但是当你了解 GET、POST、PUT 等概念,了解如何通过浏览器开发者工具查看网页发起的请求,了解如何利用你掌握的语言或工具发起一个 HTTP 请求,就可以开始你的表演了。