[小白提问]怎么样才是 API

2018-04-24 11:22:52 +08:00
 iamqiwei
我现在写异步请求就是把一堆函数写在一个文件里面,通过传一个函数名给 call_user_func($fn)来调用那个函数,我感觉这不算 api 吧???
3003 次点击
所在节点    PHP
3 条回复
Hzzone
2018-04-24 11:37:35 +08:00
application programming interface:relaxed:
MeteorCat
2018-04-24 12:55:54 +08:00
你那个是远程调用`RPC[Remote Procedure Call]`,调用远程服务器的函数方法;
以下是我自己拙见:
RPC 本质上还是 API,都是请求服务器做 IO[input/output]
需要知道 API 是什么?为什么?怎么做?

API 是什么?
API 全称就是就像楼上说的`application programming interface`,这个是暴露给外部的入口,理论上任何能够提供网络数据服务[并非页面渲染]都是 api[游戏接口有个获取客户端 IP 地址,本身就是一个调用系统函数取 IP 地址,这就是 API],哪怕你 printf("%s","api service")

为什么使用 API?
处理服务器网络(数据库保存写入|配置信息)任务,本质上就是为了网络通信,你不能让客户端直接连接 DB 层|Service 层,你需要暴露接口作为服务

怎么做 API ?
API 是个泛型概念,RPC|JSON|XML|Protobuf 都可以


总结来说就是 API 只是个泛型概念,你提供网络通信服务,那么你就是 API
timwei
2018-04-24 14:09:39 +08:00
同意 API 只是个泛型概念,表达「客户端与系统交互的接口」

举银行做例子,我要从银行提款,我不能直接走进银行金库拿钱就走,我需要透过柜员,柜员就是我与银行的接口

不同意 API 一定要牵扯到网络通信这说法,这个客户端不一定要是另一个计算机,也有可能是同计算机下的不同程序

像是 OpenGL API 或 Camera API 这类的封装,也称为 API,是图形系统、摄相机对外部程序的接口


我(客户端)透过 银行柜员(接口) 在 银行(系统) 进行 提款(交互)
Unity 透过 OpenGL API 在图形系统进行游戏画面渲染
浏览器透过 Camera API 在摄像头进行拍摄

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/449366

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX