
API和SDK
什么是SDK?SDK与API区别又是什么?
网上的文章解释实在让人难懂,那我就用写代码的方式解释一下。
这里我用到python的Flask库对外提供api
首先写一个后端服务,比如我提供一个“hello xxx” 的服务,运行起来
1 | from flask import Flask |
会有一个地址 127.0.0.1:5000 ,在我们本地5000端口开启一个服务。
然后我们在浏览器输入我们的接口 127.0.0.1:5000/api 并同时设定传入参数 name = j
浏览器帮助我们发送了http请求
如图:
我们可以看到在浏览器中返回给我们对应的值
但如果我是一个用户,我需要用这个api,那么我就需要写请求,来使用这个服务
1 | import requests |
但如果是一个复杂的api,开发者就需要重复写这些繁杂的代码
作为一个云服务商,就可以用SDK封装这些代码
1 | import requests |
我们把使用API服务的代码封装起来。
再把身份换到开发者,我现在要使用这个服务,那么我就可以直接下载服务商的SDK,直接调用,如下图:
这样我只需要一行代码即可完成调用。
如今各个云服务的厂商都会提供SDK
例如下图的腾讯云
调用这些云厂商的服务,那么一定会涉及到对你的密钥的加密,那么使用SDK即可快速使用这些服务,不需要去查这些复杂的过程。
总结
API是一种定义,SDK是方便开发者使用
你调用了一个函数,这个函数不是你写的,那么这个函数就是api。
多个这种函数的提供方被称为lib,他们帮助你快速实现底层逻辑,而不需要你使用std去逐个实现。比如调用opengl画各种图像。
然而也有大型的业务功能一键调用,它内部实现了各种逻辑,只是让你的程序能够快速实现复杂的业务功能。比如后台的语音合成功能。这种对业务提供api的玩意叫sdk。
lib与sdk的区别就是一个是提供底层实现,一个是提供业务实现。
当你决定一个项目需要怎样设计才能保证性能,安全,扩展。各个环节用什么技术,什么lib,什么sdk的时候,这个玩意叫架构。不同于api,lib,sdk可以是黑盒的,架构必须是透明的。