程序员不得不知道的 API 接口常识

nrf52840的uart0与uart1双串口使用 nrf52840的uart0与uart1双串口使用 项目原使用nrf52832,后面由于项目需要用到双串口,改用nrf52840,官方的例程没看到使用uart1的,找遍全网都没找到uart1的使用资料,有些不负责任的网文居然说40也只有一个uart,吓得俺赶紧又查看了一次datesheet,O得K、木鸭梨 SDK代码uart驱动中,搜索到uart1的驱动部分,说明官方驱动有uart1支持的 自己动手,丰衣足食吧,下面以nRF5_SDK_17.0.0_9d13099版本,在examples\ble_per 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:www.cnblogs.com/tanshao

shenghao/p/16215751.html

2b0b43e18280c28588001afc52ddaa3f.jpeg


说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写。

至今我仍清晰地记得,那个电商教程是怎么定义接口的:

管它是增加、修改、删除、带参查询,全是 POST 请求一把梭,比如下面这样:

修改用户的收货地址

POST /xxx-mall/cart/update_address

现在看来,全部用 POST 请求估计是为了传参方便吧。

那个时候自己也没有一个 API 接口需要设计 的意识,跟学过类似教程的朋友应该懂的,老师敲一行代码学生跟着敲一行。如果没人提这个事情,正式工作进入团队后,是很容易出丑的......(作者亲身经历,捂脸)

本文就不用 PPT 教案上的那种官方腔介绍 API 接口是个什么概念了,比较希望用一种聊天的方式和大家分享下现有的一丁丁和 API 相关的小心得,文章会分为五小块:

  1. 初识 API 接口

  2. 关于 API 限流

  3. 关于 API 版本管理

  4. 关于 API 权限与安全

  5. 关于团队间的 API 互通

注:这是一篇会隐式罗列很多知识点的文章,您可以按需深度搜索进行更进一步的学习。当年渴望看到这样的文章的原因是:学习一个知识点其实只需要时间,对学生而言,时间不是问题,问题在于不知道该往哪些方向学 T_T 。本文希望通过串讲,梳理一下个人当前了解到的 API 知识体系,整理的同时也希望能对大家有一点点帮助。

1、初识 API 接口

记得在我初学 web 开发的时候,后端框架相关的教程基本都会教学生写渲染模版(不分语言),也就是说后端返回的是整个网页的数据,浏览器只负责渲染。

一般这类模版在后端都会对应一个路由,比如前端想登入一个看用户信息的页面,在 url 中输入的访问地址大概长这样:

https://ajun24.com/user

那个时候,我以为这样的路由地址就是 API 概念的全部了......

值得一提的是:绝大部分后端教程都会简单教一下前端,在前端的补充教程中有一个必学的知识点,叫:AJAX。

老师大概率会演示一下 AJAX 这个技术怎么使用,写个小 Demo,告诉大家可以这样在页面上发送异步请求。

这个技术请求的后端接口一般不会跳转或返回一个 html 页面,大概率会返回一份 json 数据。我一直对这样的接口和返回页面数据的接口有着迷之困惑。直到我实习后明白了什么叫前后端分离开发......

但是为了教学方便,完整项目大概率还是会用渲染模版的方式讲解,毕竟只在一套系统里写代码演示会方便很多。

当年就是这样学完了第一个项目,虽然对如何做一个软件系统有了整体的认识,但是对 API 设计的认识是非常弱的。

其实我在学 AJAX 这个知识点的时候就在想:有没有可能全部数据都通过类似 AJAX 这种方式获取?这样感觉会更方便一些。

后来实习的时候,前端同学告诉我:开发前需要先定义 API 哦。

当然,他还告诉我:删除一个东西不能用 POST 请求哦ea9172c8341046c6e8d254a1aebd3235.png(捂脸)

后来导师提醒我:你需要去了解一下如何设计 REST 风格的 API。

自从那次出丑后,我明白了一个事情,一定要敢于把自己的不足"暴露"给愿意指点你的人看。就好比我们读大学的时候最好要努力去找一份实习,每一次被拒以及每一份 offer 都会告诉我们,这个社会需要什么样的人才,什么样的技能可以帮助我们谋得一份工作。

在正式的面试场合下,或许我们更应该条理清晰地和面试官介绍什么是表现层状态转换,但是在这篇文章中,我想把 REST 风格的 API 称为更容易让人看懂的 API。

大家会发现符合 REST 风格的 API 能非常容易地让别人知道调用这个 API 能干什么,比如:

GET     /users                # 查询用户信息
PATCH   /users/{user_id}      # 根据 id 更新某个用户的信息,只部分更新客户端提交的数据

按约定写 API 就好比在 IT 领域说行话 ,大家只要看见你的 API,就知道你能提供什么样的服务。

有同学可能会好奇为什么要遵守规范?

假如,我们负责的系统仅联系到我们身边同事的系统,那约定 API 的时候只需要打个招呼,或在聊天工具上简单说明一下就可以了,甚至可以没有文档。

但在很多情况下,我们的系统是要被很多其他系统调用的,大家想象一下我们去调用云厂商 API 的场景:别人的工程师大概率不是我们的微信好友,大多数时候是没有人站在我们身边手把手告诉我们 API 怎么调用的。这个时候想调用对方提供的 API,就得看对方提供的 API 文档。如果对方的 API 不按照规范定义,那 API 文档绝对像天书一样难读。

看天书的痛苦,保证大家体会一次足以终生难忘。

良好的 API 文档一般会像工具手册,没有太多学习成本,否则别人下一次很有可能就不使用我们的服务了d190d500a5198792db85ea9461341ef2.png

所以先系统地学习 API 定义约规,再编写 API 文档,然后根据设计进行开发是一个比较好的研发流程。

接下来的问题是,在了解了 API 的规范后,如何写出良好的 API 文档呢?

众所周知,写文档对程序员来说是一件非常痛苦的事情,一想到学习写专业的 API 文档还需要学习成本,实在是劝退。这个时候我们可以通过一些自动化工具辅助我们完成一篇优秀的 API 文档,比如我们可以使用 swagger,它可以通过我们的代码自动生成 API 文档。

最近还看到不少基于 API 的研发测试一体化产品和平台,感觉一站式的、流水线式的研发管理是未来的趋势呀!

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

2. 关于 API 限流

API 写出来后会被调用,但由于计算机 & 网络系统的局限性,我们的 API 接口是不可以被无限制调用的。

大家可以随便到网上挑一个比较专业的 API 文档看,比如大家可以去看云厂商对外提供的 API,基本都会看到一个接口频率调用限制,比如:单用户调用频率为 30 次 / 秒。

所以当我们在设计 API 的时候,限流是一个不得不考虑的事情(内部自己弄着玩的不算哈,泛指面向用户的系统)

在设计限流之前,我们首先要知道自己系统的瓶颈。假设我们的 API 纯粹调用自家的技术组件,比如数据库,消息队列等中间件,这个时候我们可以通过压测得知一个接口的最大承受能力;假设我们的系统是一个中间系统,需要依赖其他系统的接口完成业务,那么这个时候基于木桶原理,我们接口的可访问频率就会受限于其他业务系统。

了解完自身项目的访问瓶颈后,需要考虑自身系统的架构,假设我们的系统是单体部署:

4f9468498d71db39c2c02e94a5ecb51e.png

那这个时候我们只需要简单的令牌桶算法即可以完成限流,下面是一个极简的令牌桶算法实现 Demo:

"""
简单解释:
实现一个固定容量的桶,按一定的频率往桶内放令牌直至桶满,每当执行一个限频操作需要从桶中获取一个令牌才能继续操作,若桶中没有令牌,则进行等待
往令牌桶中放令牌的操作不便按照原概念实现,所以放令牌这步放到取令牌的时候进行。我们根据当前取令牌的时间减去上一次取令牌的时间差,就能得知这段时间内增加了多少个令牌。
"""

class TokenBucket(object):

    # rate 是令牌桶生产令牌的速率,capacity 是令牌桶生产令牌的速率
    def __init__(self, rate, capacity):
        self._rate = rate
        self._capacity = capacity
        self._current_amount = 0
        self._last_consume_time = int(time.time())

    # token_amount 是执行一次操作需要的令牌数量
    def consume(self, token_amount):
        # 通过时间差乘速率,得到令牌的增量
        increment = (int(time.time()) - self._last_consume_time) * self._rate
        时间差乘速率,得到令牌的增量  
        self._current_amount = min(
            increment + self._current_amount, self._capacity)
        # 令牌数量不够则不允许操作
        if token_amount > self._current_amount:
            return False
        # 更新最后一次操作时间
        self._last_consume_time = int(time.time())
        # 结算当前的令牌数量
        self._current_amount -= token_amount
        return True

但实际工作中,我们部署单体架构的机会不多,现在的大公司都构建有自己的云生态,业务部门上云后可快速进行扩缩容,所以我们的系统很有可能会进行集群部署,用户的请求通过代理层负载均衡至各个后端节点:

ffcaa48acbd0a283a1c9ca682823a6cf.png

这个时候上面的 15 行代码显然就不符合我们的分布式系统架构,我们得考虑更复杂的限流算法实现了(这里不是指令牌桶算法不合适,是指令牌桶算法的实现方式需要改进),当然这个实现大概率会放在代理层了,而不是实现在我们的业务层。

大家可以上网看一下主流云厂商提供的云服务,很多都会提供 API 网关,对应着我们上面提到的代理层。

假如一个公司有统一的 API 网关服务,或有类似的代理服务,业务部门是可以在 API 限流这件事情上省下很大功夫的。我有时候想,当越来越多的中小企业基于巨无霸云厂商搭建业务,大家要考虑的技术性问题就会越来越少,越来越专注于业务,这到底是一件好事还是坏事呢?

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

3、关于 API 版本管理

介绍完 API 及限流的基本知识后,谈一下和业务比较相关的 API 的版本管理。

在没真正接触业务前,我以为只有软件需要做版本管理,为啥 API 也要做版本管理咧?

其实原理是一样的,软件会根据需求不断迭代版本,API 同样也会迭代版本,但秉承开闭原则,为了不影响之前的业务,我们最好不要改动原有的 API。

因此,我们设计 API 的时候可以指定版本号,比如上述的例子:

GET     /users  # 查询用户信息

我们可以统一定义成:

GET     /api/v1/users  # 查询用户信息

假设这个接口有了第二个版本,我们就可以通过版本号进行区分了:

GET     /api/v2/users  # 查询用户详细信息

换作两年前的我可能会对 API 版本管理无感,但大家尝试把自己代入以下场景就能明白了:

比如我们的产品让我们出一套新的查询用户 API,假设我们没有定义版本号,由于 /users 这条路由已经在用了,逼不得已,我们就会定义一个新的:

GET     /get_user_info  # 查询用户信息

新接口和老接口的意思差不多,如果我们一直负责这个系统,那还好说(心里有不同版本的区分)

但假如这个系统换了另一个接班人,当他面对大量意义接近的接口时,肯定会怀疑人生的......(屎山就是这样来的)

4. 关于 API 权限与安全

接着我们思考一下 API 的权限与安全问题。

还是回到初学的时候,那个时候我对 API 接口权限完全没有任何概念。老师为了快速教会我们开发系统,很多接口的设计是完全裸奔的。如果不了解一点点相关的知识,工作中会容易给别人一种考虑事情不周到的感觉。

在实际生产中,接口是不可以不做权限校验的,如果我们的系统暴露在公网,还没有权限校验的话,系统估计很快就挂了;内部涉及机密的系统,权限校验则更为严格。

关于权限校验,个人暂时分为三个维度,三个维度或许可以对应三种业务类型:

  1. 第一种是直接针对 IP 设置白名单,这种方式比较适用于客户端有限且固定的内部系统;

  2. 第二种则是设置权限校验流程,比如采用 Token 鉴权,较多用于 ToB 业务。大家在云厂商注册账号后基本都会得到一对密钥,后续的 API 调用一般都需要先根据密钥进行权限认证;

  3. 第三种是通过用户登陆判断权限,较多用于 ToC 业务,比如我们登陆京东,登陆淘宝需要账号,没有登陆就访问不了购物车等页面。

值得一提的是,权限设计是另一个维度的知识,除了第一个维度,后两者其实都可以单独成立一个系统的。比如公司的用户管理系统,中心化权限认证系统等等。

权限校验关乎着公司财产安全,所以不可忽视,很多时候我们甚至需要在 API 设计层面考虑安全问题。再次引用商城的例子,比如登陆后获取用户购物车的订单,API 大概率会设计成这样子:

GET /users/287435/orders

但直接暴露用户 id 或许不是一个明智的选择,有可能被不法分子利用,我们可以换种方式,比如用以下的方式替代:

GET /users/me/orders

总而言之,API 的设计除了参考规范外,还需要根据自身业务情况进行更进一步的安全考虑。

5、关于团队间的 API 互通

最后是一个延展性话题,相信大家都感受到了我们正身处于一个数据时代,我们的个人信息,包括各类行为喜好,都存放在各家互联网公司的数据仓库里,企业们可能比我们更了解我们自身,网上也有很多与数据资产有关的话题。

既然已经把数据比作资产了,而资产流动性又是一个经久不衰的话题,所以各类数据的开放性问题也倍受关注。而数据对外开放,必然就会涉及到 API 接口。

当然作为一只小码农,我的视野极其有限,很难从一个较高的层次去谈论企业的数据问题。但在工作中,当其他业务团队提出要调用自己负责的项目的 API 接口时,也是需要进行多方位考虑的。

本文列出的就是个人会从技术上考虑的点,总结成三句话就是:

  • 你能看懂我的 API 嘛?

  • 别把我的 API 打爆哦!

  • API 要经允许才能使用哦!

由于API 的这个概念实在是太大了,我能接触的也是一些些皮毛,但时不时总结整理一下还是大有裨益的。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

409a1b20dba2b3f290d93d3cd7794f7e.png

已在知识星球更新源码解析如下:

90f9727c9a034f7aaead4248fb609d28.jpeg

802f240fd3e3dfec135cb86c2f2e7336.jpeg

11146daa876225e66ddd0604e9357311.jpeg

a1a2d53e04a1598fa940e5abc0df4af9.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
阿里云大模型 ACP 认证教材内容突变?这些改动藏着通关密码,不看亏大! 【摘要】核心章节大换血,安全合规融入实战场景,大模型微调用数学深度解析,部署章节带来阿里云产品对比实战攻略,甚至整章内容被替换成藏满学习彩蛋的行业趋势指南。这些改动不仅重塑考试重点,更暗藏官方命题风向——安全合规考场景方案,微调原理考几何解析,部署设计考分析框架。无论你是数学小白还是部署新手,这篇攻略都将带你吃透变动逻辑,附赠急救包和考点清单,帮你抓住这些“隐形加分项”,速来解锁通关秘籍! 阅读详情

相关推荐

手持式激光测距仪全套方案

激光测距全套方案,包括原理图、源代码、PCB、BOM、光学部分资料,结构、特殊元件数据手册及供应商联系方式,提供调试技术文档。全套方案已成功打板验证,实现0.05~50m测量范围,精度在+/—1.5mm,激光波长635~650nm,功率《1mW。方案预留了TTL串口、RS485接口,可通过串口助手看到测量数据,可自行DIY或者商业开发。无论是电路小白,还是技术大拿,都能通过方案资料成功做出一套激光测距仪。

Laser01的博客 2056

知识星球项目_API网关中间件设计和实践:问题描述/解决方案/Note

字节码是一种用于描述 Java 类型的二进制格式。每个 Java 类型都会被编译成字节码,这些字节码可以在任何支持 Java 虚拟机 (JVM) 的平台上运行。Java 字节码被设计为高度可移植的,因此程序只需要编译一次,就可以在任何支持 Java 的操作系统上运行。Java 字节码由一组指令集组成,这些指令集被称为 JVM 汇编语言。JVM 的指令集是在设计时就考虑到了安全性、可移植性和高效性等因素。JVM 可以根据字节码执行指令,以实现 Java 应用程序的功能。

llll1515的博客 743

V2签名预装失败原因及解决方案

GOOGLE最新的GTS要求targetSdkVersion 大于30的APK必须使用V2及以上签名。 但实际在预装过程中,GTS测试会失败。 后面发现这是由于预装方式的原因造成的。原来的预装方式是使用APK,指定APK使用预签名的方式。Android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := DKTest LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS

zyfzhangyafei的专栏 6306

[Python爬虫]zsxq-spider:知识星球内容批量导出与PDF制作工具

知识星球作为优质内容社区,其内容以信息流形式展示,缺乏批量导出与离线阅读功能。开发者在学习过程中常面临三大痛点:重要内容难以系统归档、离线场景下无法访问、优质讨论无法结构化保存。这些问题导致知识沉淀效率低下,影响内容二次利用价值。zsxq-spider项目通过技术手段解决上述问题,实现知识星球内容的自动化爬取与PDF电子书制作,为内容管理提供完整解决方案。 ## 方案:技术选型与核心架构 ##

gitblog_00283的博客 989

ArcGIS坐标系实战:从北京54到CGCS2000的完整转换指南(附常见报错解决方案)

本文详细解析了ArcGIS中从北京54到CGCS2000坐标系的完整转换流程,涵盖核心原理、分步操作指南及常见报错解决方案。重点介绍了高斯投影分带规则、地理变换方法选择以及性能优化技巧,帮助GIS工程师确保空间数据的精确转换与高效处理。

weixin_29284657的博客 762

CS224W图神经网络实战:如何用Motifs和Graphlets分析社交网络结构?

本文基于斯坦福CS224W课程,深入探讨了如何利用网络模体(Motifs)和图元(Graphlets)分析社交网络的微观结构。通过实战代码演示,文章介绍了如何识别具有统计显著性的关键连接模式,计算节点的图元度向量以刻画局部拓扑特征,并将这些结构洞见应用于社区发现、影响力分析及图神经网络的节点特征工程,从而提升模型在虚假账号检测等任务中的性能。

2w3e4r5t6y的博客 912

干货 | 常见的API接口漏洞总结

???? 这是一个或许对你有用的社群???? 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事上“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

芋艿V 643

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 196

知识星球-伙伴匹配系统笔记3

在线接口文档,excl表格取值操作

渡边彻的博客 550

实战:RK3568 Android14 调试 MIPI DSI 液晶屏

LCD1_RST -> 对应原理图网络连接到 GPIO。LCD1_PWR_EN ->用于给屏幕 VCC 供电。LCD0_BL_EN / LCD0_BL_PWM -> MP3302 升压芯片驱动 LED 灯条。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/100f2be7f763494da1032464e272e63b.png&pinctrl {/* 配置 LCD_RST 和 LCD_EN */

qq_33427070的博客 1551

华为OD机试真题 新系统 2026-08-16 Python&JS【智能家居模式调度优化】

智能家居系统中有多个自动化联动模式,每个模式 modes[i]=[start_time,end_time,power],表示它在左闭右开区间 [start_time,end_time) 内持续消耗固定功率 power。

MISAYAONE的博客 85

100 多个免费 API 接口分享,调用完全不限次数,以后总用得着

点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络...

芋艿V 2628

内网渗透(二)之基础知识-工作组介绍

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,它们都会列在"网络"(网上邻居)内。如果不对这些计算机进行分组,网络的混乱程度是可想而知的 为了解决这一问题,产生了工作组( Work Group)这个概念。将不同的计算机按功能(或部 门)分别列入不同的工作组,例如技术部的计算机都列入"技术部"工作组、行政部的计算机都 列入"行政部"工作组。要想访问某个部门的资源,只要在"网络"里双击该部门的工作组名 就可以看到该部门的所有计算机了。相比不分组的情况,这样的情况有序得多(尤其对大型局域网来说)。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 1219

程序员 不得不知道的 API 接口常识

说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写。至今我仍清晰地记得,那个电商教程是怎么定义接口的:现在看来,全部用 POST 请求估计是为了传参方便吧。那个时候自己也没有一个 ​​ 的意识,跟学过类似教程的朋友应该懂的,老师敲一行代码学生跟着敲一行。如果没人提这个事情,正式工作进入团队后,是很容易出丑的......(作者亲身经历,捂脸)注:这是一篇会隐式罗列很多知识点的文章,您可以按需深度搜索进行更进一步的学习。

WBKJ_Noah的博客 291

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java后端程序员不得不知道的 API 接口常识

但在很多情况下,我们的系统是要被很多其他系统调用的,大家想象一下我们去调用云厂商 API 的场景:别人的工程师大概率不是我们的微信好友,大多数时候是没有人站在我们身边手把手告诉我们 API 怎么调用的。这个时候上面的 15 行代码显然就不符合我们的分布式系统架构,我们得考虑更复杂的限流算法实现了(这里不是指令牌桶算法不合适,是指令牌桶算法的实现方式需要改进),当然这个实现大概率会放在代理层了,而不是实现在我们的业务层。当然作为一只小码农,我的视野极其有限,很难从一个较高的层次去谈论企业的数据问题。

电商数据Girl的博客 616

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

程序员的API接口宝典:不得不知道的常识

在软件开发的世界里,API(应用程序编程接口)接口是连接不同系统和应用程序的桥梁。对于程序员来说,了解API接口的常识是必不可少的。本文将带你探索API接口的基础知识,让你在编程的道路上更加游刃有余。

2401_87195067的博客 540

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

程序员不得不知道的API常识

熟悉如何构建请求(包括HTTP方法、URL、头信息、查询参数和请求体)以及如何解析响应(状态码、响应头、响应体)。:了解如何处理API请求中可能出现的错误,包括网络问题、认证失败、资源不存在等。:大多数API都需要某种形式的认证,如API密钥、OAuth tokens等。:确保API通信的安全性,使用HTTPS、验证SSL证书、保护API密钥等。:了解API经济和生态系统,包括API市场、API管理和监控工具。:了解如何阅读和理解API文档,这是使用任何API的第一步。

2401_88805485的博客 518

程序员都应该了解的7款API接口平台

应用程序接口(API)是开发者的便捷利器,帮助开发者快速连接外部功能与程序。幂简集成为开发者们精选了7个API接口平台,平台涵盖了市面上常用的API,为开发提供丝滑的集成体验。

Explinks的博客 1万+

如何调用api接口

API有很多种,最基础的就是产品最需要的,比如短信API、地图API、语音API等。如果我们的产品涉及到这个功能,就必须了解这个API,这样才能在需求设计阶段考虑的更全面。可能大家看了美国科幻大片,把程序员想象成了高智商的黑客。但现实是,大多数情况下,他们只负责修复bug,真正的源代码只是在网上复制粘贴而已。所以不要被他的外表所迷惑,PM的应该知道他的优优资源网的工作量,只需要在团队中给出明确的指令来管理项目的进度,大致了解程序员的工作内容,这样你就可以管理对接了。

Noah_ZX的博客 4299

如何做一个api接口

所以不要被他的外表所迷惑,PM的应该知道他的优优资源网的工作量,只需要在团队中给出明确的指令来管理项目的进度,大致了解程序员的工作内容,这样你就可以管理对接了。他能理解我们的工作,但我们很难理解他们。最后,我想说,在产品行业,一切都是相通的,PM不必质疑自己的工作,也不必自卑。如果没有API,B必须经历软件A的全过程,这需要花费大量的时间和精力,但如果是接口来访问一些功能,就简单方便了。一些关键接口,那些数据量大,需要大数据压力测量的接口,必须通过连接测试,测量其更大流量,优化或设置限制,防止系统崩溃。

Merissa_的博客 5707

【好文转发分享】不得不了解的API接口常识

说实话,我非常希望两年前刚准备找实习的自己能看到本篇文章,那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写。 转发自:程序员不得不知道的 API 接口常识 - 胡涂阿菌 - 博客园 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加、修改、删除、带参查询,全是 POST 请求一把梭,比如下面这样: 修改用户的收货地址 POST /xxx-mall/cart/update_address 现在看来,全部用 POST 请求估计是为了传参方便吧。 那个时候

AuroraFaye的博客 361

api接口怎么使用

API,官方定义为应用程序编程接口。就是把是一些预先定义的接口,用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

Noah_ZX的博客 6988

程序员应该知道的97件事

程序员应该知道的97件事 ISBN: 9787121117565 作者:Kevlin Henney 译者:李军 译 / 吕骏 审校 推荐指数: ★★★★★ 阅读时间: 2016-04-24 上星期拿了三本书来看,其中一本就是《程序员应该知道的97件事》。 大概通读了一遍里面有73位著名的人物,分别写了97件事。 每个人都有自己总结的一句话,对于程序员们确实很实用。 这里面的人物在程序员这一职业中有工作20年以上的经历,有自己开公司的也有是博士、教授的。 若能认真遵守这97件建议,我想你应该是一个了不起的

Jack魏 2171

总被程序员坑?你需要了解API接口

也许大家都是看了美国的科幻大片,把程序员想象成黑客一般的高智商人物。但现实是,在大多数情况下他们也只是负责修复BUG,真正的源代码不过是网上复制粘贴。所以PM们不要被他的表象所迷惑,了解他们的工作量,在团队中只要给出明确的指令管理项目进度,并且大致了解程序员的工作内容以便于你管理对接就行了。

Noah_ZX的博客 687
上一篇: 魔改xxl-job,彻底告别手动配置任务!
下一篇: 这是什么初级工程师的薪资??
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值