• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

通过代码解释什么是API和SDK?


Recommended Posts

我不好意思问这个问题。这是我读书的时候第一个找实习的公司问的第一个问题。

当时也说不清楚,就回百度查了一下。查了半天还是看不懂,然后就把问题搁置了。

谁知毕业正式工作后,他又一次面临这个问题.(事实告诉我们,知识债总是要还的)

现在回想起来,我明白为什么我想不通这个问题了:

从未使用过SDK

思维只停留在前后API接口交互上。

所以,想要理解这个问题,看别人写的概念性解释文章,可能帮助不大。您仍然需要自己设计API,并使用或简单地打包一个SDK。

接下来,我尝试设计一个小故事,直接通过代码来解释这件事。

对外提供云你好服务

假设我是一个软件服务商。我设计了一个问候服务,命名为:Hello Cloud。

只要用户调用我的API接口,就可以使用我的服务。我会向他问好。

首先,我开始了后端服务。在这里,我选择python,主要是因为它速度更快,代码更少。解释这个问题和语言无关。(先看代码,再解释)

#云Hello服务源代码

从烧瓶进口烧瓶

从烧瓶导入请求

app=Flask(__name__)

# Cloud Hello服务API接口

@app.get('/api/hello ')

def hello():

#查看用户是否传递了参数,该参数是问候语的目标。

name=request.args.get('name ','')

#如果参数被传递,向目标对象问好,否则输出Hello World。

如果名称为“Hello World ”,则返回f“Hello { name}”

#启动cloud hello服务

if __name__=='__main__':

app.run()

从上面的代码可以看出,我已经定义了Hello Cloud的API接口:

@app.get('/api/hello ')

def hello():

.

当我的服务运行时,我会告诉用户如何调用我的API:

请求地址:get http://127 . 0 . 0 . 1:5000/API/hello

可选请求参数:name-greeting对象的名称。

当然,提供一个API文档更标准。

没有 SDK 如何使用云你好

接下来,让我们交换身份。假设我现在是云hello用户。

我登录Hello Cloud官网后,只看到Hello Cloud定义的API调用规则。

也就是说,如果我要使用cloud hello服务,无论是写python、java还是golang,都要写发送http请求的代码,调用cloud hello API来使用问候服务。

例如,在python中我们可以这样写:

#我是云Hello服务的客户,通过发送http get请求使用云Hello。

导入请求

# API地址

URL=' http://127 . 0 . 0 . 1:5000/API/hello '

#发送获取请求

Response=requests.get (URL=URL,params={'name' 3360' A Fung'})

#打印响应结果

打印(响应.文本)

最后的结果是:你好细菌。

更好地服务我的客户

接下来,让我们交换身份。比方说我又变回了云Hello服务商。

简单研究了一下,听说很多python/java/golang的工作者都喜欢用我们的云hello服务。

为了让他们更方便的使用云hello服务,我决定为他们提供云hello服务python sdk/java sdk/golang sdk,进一步降低他们使用云hello服务的难度(诱骗他们多收服务费)。

下面我以python sdk为例。在sdk中,我会封装使用云hello服务的逻辑,只提供一个hello方法给用户,这样只要用户安装了云Hello sdk,就可以直接调用Hello方法来使用云Hello服务。

# Cloud Hello python sdk

导入请求

HelloSDK:级

# Cloud Hello服务地址

service _ URL=' http://127 . 0 . 0 . 1:5000/API/h

ello" @classmethod def hello(cls, name): response = requests.get(url=cls.service_url, params={"name": name}) return response.text

写好 sdk 后,我们会在官方网站上更新道:

大家好,欢迎使用云你好 python sdk,您可以通过以下方式使用 sdk:

  1. 安装云你好 sdk:pip install hello-sdk
  2. 使用你好云 sdk:
from hello_sdk import HelloSDK
HelloSDK.hello("阿菌")

使用 SDK 访问你好云

然后我们再次切换身份,假设我是你好云服务的用户,你好云发布 SDK 了,我非常高兴,于是我的代码就简化成这样了:

# 我是云你好服务的一名客户,我通过你好云的 hello-sdk 使用你好云服务
from hello_sdk import HelloSDK
HelloSDK.hello("阿菌")

得到的结果仍然是:Hello 阿菌

总结

希望上面的代码能帮助大家理解 API 和 SDK,当然它只是一个极简的 Demo,不能代表 API 和 SDK 这两个概念的全部东西。

IT 行业中有很多概念,他们背后往往对应的是一类行为,如果仅从技术名词的角度理解是非常痛苦的,所以极力推荐动手实践学习。

API 的全称是:Application Program Interface(应用程序接口)

SDK 的全称是:Software Development Kit(软件开发工具包)

如果让我总结 API 和 SDK 的区别,我觉得 API 可以理解成一种标准吧,我们按照服务提供商定义的 API 标准去调用他们的服务,就能得到相应的结果。

而 SDK 可以理解为对 API 背后服务的一种封装,它更贴近用户,能大幅降低用户使用服务的开发成本。

最后,如果同学们还想进一步学习的话,推荐去看一下云厂商的 API 和 SDK 定义,甚至分别动手体验一下,绝对瞬间秒懂。

参考讲解 - 链接地址

Link to comment
Share on other sites