程序的本质—API接口

211 阅读4分钟

API 是什么

官方定义:API 英文全称 Application Programming Interface,翻译过来为程序之间的接口。也是程序与外部世界的桥梁,实现了服务拆分与解藕的核心机制

大白话:按照规则提供输入,它帮你得到对应的输出

  • API可以是厨师:你提供食材,它输出饭菜
  • API可以是司机:你提供目的地,它帮你送到目的地
  • API可以是医生:你提供个人基本信息,它给出对应药方
  • ...

越是系统化的东西,越容易成为 API,所以有了自动炒菜机帮助炒菜、有辅助驾驶(或 L3 级别的自动驾驶)帮助开车、有 AI 医生辅助开单等

API 发展的必然性

为了使各类程序从孤立的个体转变为可组合、可扩展的生态系统成员,那么需要一些特定的协议、规范,而恰好 API 能够完美的解决这个问题,抽象化程序提供的服务,专注于自身的核心能力

通过 API 接口,各类编程语言互通有无,Python、Java、C++ 等编写好对应的服务后统一暴露出去,减少了重复造轮子的人力消耗,这也是为什么互联网发展才几十年,人类历程的社会化程度却比历史以往快进了一大步。

我们在日常生活中使用大量的电子、软件产品,无时无刻都在调取 API。我们日常生活中使用的微信,登陆页面调取登陆 API 接口,和朋友发送聊天记录调取发送 API 接口,查看微信朋友圈调取朋友圈接口。企业级应用会通过一些工程化手段保证 API 接口的稳定性、响应性

  • 稳定性:发送消息断掉了冒红点,当前发送这条消息因为网络波动、或 API 服务商提供者等其他元素导致 API 接口短暂不可用
  • 响应性:发送一条消息要很久才能成功,也就是 API 工作时长太慢了

实践案例

你眼中的“黑客”,能获取大量个人身份信息的,可能只是一个 API 侠

只需要掌握一点点调用 API 的知识,你也能完成如下这些事情

  • 定位目标地理位置

    • 根据用户 IP(IP 就是你上网地址,在使用各类 APP 软件时,会留下痕迹,警察抓捕罪犯,就用的这个)
  • 个人身份认证

    • 校验姓名和身份证是否一致,还支持返回生日性别、籍贯等隐私
    • 人脸识别和身份证是否一致
  • 出行服务

    • 根据车辆 VIN 码获取车的品牌、车型、出厂、发动机类型、排量、过户次数等
    • 查看某城市的限行时间,限行区域、尾号规则等
  • 企业服务

    • 根据公司名称,获得公司从法人、联系方式、注册资本、成立时间等
    • 根据发票号码或 PDF 文档,校验发票真伪等
  • AI 应用与 OCR

    • 动植物识别,传入对应的图片,获得信息
    • 市面上段时间内出现大量的 AIGC 应用软件(文-> 文、文-> 图、文-> 视频、图 + 文-> 图等等),本质就是调用国内大公司提供的专属于 AI 应用的 API 接口,自己套了一层界面外壳,难点是开发这些 API 服务的厂商们,其他本质上就是拿来主义者

下面给出两个示例

文生视频

生成视频 API 接口

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer xxx' \
--header 'Cookie: acw_tc=335d3876-41eb-900b-9254-fe83495810c147ce41ec769502770f59333ed738835e' \
--data '{
    "model": "wanx2.1-t2v-turbo",
    "input": {
        "prompt": "一只小猫在月光下奔跑"
    },
    "parameters": {
        "size": "1280*720"
    }'
  • 会得到一个 task_id:81d4d7c3-1cb6-905b-b8f0-40f91e2902f4

调用另一个接口,通过 task_id 获取视频位置

curl --location 'https://dashscope.aliyuncs.com/api/v1/tasks/25603041-160a-48b3-b663-b1c12e31d8b5' \
--header 'Authorization: Bearer xxx' \
--header 'Cookie: acw_tc=335d3876-41eb-900b-9254-fe83495810c147ce41ec769502770f59333ed738835e'

现在,我只要把阿里百炼平台上提供的这两个接口包装下,写套界面外壳,就可以号称自己开发了一款文生视频的软件了(bushi)

根据车辆 VIN 码获取车的身份信息

网上随手找的一个车辆 VIN 码“LFVBA11G223082993”。现在我能拿到它全量信息了

API 市场

聚合数据:www.juhe.cn/docs

rapidapi:rapidapi.com/

API 云市场:market.aliyun.com/apimarket/c…

知名 github 开源 API:github.com/public-apis…github.com/public-apis…