一、背景介绍 在平时工作中,我们会把通用的代码,合并到一个通用的SDK中,增加大家工作效率,本文主要分享我们在编写SDK时候的准入标准以及相关编码思想。 首先需要回答,为什么要编写SDK?
本文首先阐述了 RESTful 风格 API 的基础理论知识以及 Richardson 成熟度模型,随后讨论了好的 API 应该具有哪些特征,最后对流行的 API 实现方式,即 GraphQL 和 RESTful,进行了对比。 现在,每个人都在关注 API。API 最早开始流行于大约 20 年前,2000 年,Roy Fielding 在他的博士论文中首次提出了 REST 这个术语。同年,Amazon、Salesforce 和 eBay 向全世界的开发者介绍了他们的 API,永远改变了我们构建软件的方式。 在 REST 之前,Roy Fielding 论文中的原则被称为“HTTP 对象模型”,随后你会明白这为何非常重要。 随着阅读的深入,你还会看到如何确定你的 API 是否成熟,好 API 的主要品质是什么以及为何在构建 API 的时候,要注重适应性。 1 RESTful 架构基础 REST 代表表述性状态转移(Representational State Transfer),由 Roy Fielding 在他的博士论文中定义,长期以来,它就是服务 API 的圣杯。它并不是构建 API 的唯一方式,但是由于它的流行,即便是非开发人员也知道这种标准。 RESTful 软件有如下六种特点: 客户端 - 服务器端架构 无状态 可缓存 分层系统 按需编码(可选) 统一接口 但是,对日常使用来说,这过于理论化了。我们需要更具操作性的东西,这也就是 API 成熟度模型。 2 Richardson 成熟度模型 该模型是由 Leonard Richardson 提出的,它将 RESTful 开发原则结合成四个简单易行的步骤。在模型中的位置越高,就越接近 Roy Fielding 所定义的 RESTful 原始理念。 Level 0:POX(Plain Old XML)的泥沼 Level 0 的 API 是一组简单 XML 或 JSON 的描述。在前文中,我曾经说过在 Fielding 的论文之前,RESTful 原则被称为“HTTP 对象模型”。 这是因为 HTTP 是 RESTful 开发中最重要的组成部分。REST 要尽可能多地使用 HTTP 固有属性中的理念。 在 Level 0,没有使用任何这样的东西。我们只是构建自己的协议并把它作为一个专有层。这种架构被称为远程过程调用(Remote Procedure Call,RPC),适用于远程过程 / 命令。 通常我们会有一个端点,可以对它进行调用以获取一堆 XML。在这方面,一个典型的例子就是 SOAP 协议:另外一个很好的例子就是 Slack API。它有些多样化,有多个端点,但依然是 RPC 风格的 API。它暴露了 Slack 的各种功能,中间没有附加任何特性。如下的代码展示了如何向一个特定的通道发送消息: 虽然按照 Richardson 的模型,这是一个 Level 0 的 API,但是这并不意味着它是不好的。只要它是可用的,并且恰当地服务于业务需求,那它就是很棒的 API。 Level 1:资源 为了构建 Level 1 的 API,我们需要找出系统中的名词并将它们通过不同的 URL 暴露出来,如下面的样例所示:其中,“/api/books”能让我访问一个通用的图书目录,“/api/profile”能够让我访问这些书的作者的基本信息。为了获取某个资源的第一个特定实例,我可以在 URL 中添加 ID(或其他引用)。 在 URL 中还可以嵌套资源,这展示了它们是以层级结构的形式组织的。 回到 Slack 的样例,如下展示了按照 Level 1 API,它们会是什么样子的:现在,URL 发生了变化,从原先的“/api/chat.postMessage”变成了现在的“/api/channels/general/messages”。 信息中“channel”部分从请求体转移到了 URL 中。从字面就能看出,通过使用这个 URL,我们可以预期有条消息发布到了 general 通道上。 Level 2:HTTP 动作 Level 2 利用 HTTP 动作(verb)来添加更多的含义和意图。在这方面可用的动作比较多,我这里只用到一个基础的子集:PUT / DELETE / GET / POST。 借助这些动作,我们可以预期包含它们的 URL 有不同的行为: POST:创建新数据 PUT:更新现有的数据 DELETE:移除数据 GET:查找特定 id 的数据输出,获取某个资源(或整个集合) 以上面提到的“/api/books”为例:那这里的“安全”和“幂等”又是什么意思呢? “安全”的方法指的是永远不会改变数据的方法。REST 建议 GET 方法只能用来获取数据,所以在上面的集合中,它是
AI写作助手能帮我做什么? 提高写作效率:AI写作助手可以自动生成文本、提供写作建议和改进方案,从而大幅度提升写作速度。
,这次则从如何撰写一个好的PRD角度来帮助产品经理完成专业能力提升。 PRD撰写,是产品经理的一项重要工作,也是专业能力的核心体现。 首先,我们来看看PRD经常出现的问题。
不过并非所有格式的硬盘都可以被Mac电脑读写,比如Mac电脑无法写入NTFS格式的硬盘,需要利用NTFS读写软件才可实现正常读写。
ChatGPT回头就是一巴掌:问题都不会问的还想写程序呢! 开个玩笑,确实我也不指望一点技术不懂的就给写出来,所以还是拿出我的VSCode来吧,装上百度的文心快码。
您知道吗,现在有个特别火的东西叫 AI 写作。这可真是个新鲜玩意儿,以前咱想都不敢想,机器也能写文章啦!
❓今日问题:Java使用泛型写一个LRU缓存 ❤️一起看看文心快码Baidu Comate给出的答案吧!
4.正式烧录 烧录教程:https://nodemcu.readthedocs.io/en/master/flash/ 此处我们选择esptool.py作为烧录工具。
大家写产品营销文案最痛苦的是什么呢?当然是写营销特点和创意啦!这个简直不要太烧脑了,毕竟每个人脑子里的鬼点子有限。但有了AI就不一样了,它真的能启思维,让你充满灵感。