一.开发api接口
开放给其他人调用的api接口(短信接口,支付宝api)

二.api安全弱点
数据窃取(解决加密),数据篡改(解决MD5),数据泄露(爬虫技术)(解决令牌)
1.加密(HTTPS传输-收费)
对称(DES,AES)和非对称(RSA)
公钥加密(三方)-私钥解密(我方)
私钥加密(我方)-公钥解密(三方)
Base64码:ascii码表(64个可见字符)--6个一组重新编码补0(2进制)--10进制--base64对照表

2.MD5

3.TOKEN令牌

在工作中遇到的问题:
主键:不要设置自增的序列ID
大众点评:商店自增的序列ID(容易将此网站的数据爬出来)
解决:
1.UUID.randomUUID().toString()
指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
2.有效时间
3.人机交互验证码

三.性能优化:
1.Tomcat调优:

2.MySql调优:

3.JVM调优:
jstask

-------------------------------------------------
事实上很多的API就是这样实现的,人们首先发现有重复的代码,然后制作统一的接口取代这些重复代码,于是就产生了API。这是一件好事。

1.Spring Boot中使用swagger,sosoapi,测试工具postman
2.标准的javadoc api
Javadoc的优势:

原生java的API管理工具,Javadoc根据标准的Javadoc注释生成
成熟,简单,对代码无侵入性
代码、注释、文档一体化

javadoc的劣势:难以规范化,统一化
对于新人来说,上手的难度不小

swagger的劣势:
代码侵入性比较强
影响代码的可读性

swagger的优势:
restful风格支持
设计、开发、测试、文档一体化
应用场景说明:
对于Javadoc的API,我们更多面向类库开发者、项目内部使用。提供给外部调用的一个接口查询、使用示例清单。
对于swagger,我们更多是在web项目中,尤其是restFul风格的前后端分离的项目,在设计、开发、测试阶段能带来极大的优势

------------------------
RestFul API
REST(Representational State Transfer)
所有的东西都是资源,所有操作都通知对资源的增删改查(CRUD)实现
对资源的增删改查对应的URL操作(post,delete,put,get)
无状态(无session)
资源URL:http://somehost/tvseries
查询GET:/tvseries 获取电视剧列表
增加POST:/tvseris
查询单个GET:/tvseries/101
删除DELETE:/tvseries/101

登陆:POST/auth
登出:DELET/auth

api稳定性:

1)编码规范,json返回规范

2)设置错误返回码,不能返回null

3)加密码,加验证,TOKEN令牌

服务端写一个过滤器对token、timestamp和sign进行验证,只有在token有效、timestamp未超时、缓存服务器中不存在sign三种情况同时满足,本次请求才有效。

怎么解决API的并发问题?
1.负载均衡,增加服务器吞吐能力nginx
2.大量访问时使用消息队列activeMQ,kafka
3.redis缓存
自定义注解+拦截器+Redis实现限流

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流:
(1)缓存:缓存的目的是提升系统访问速度和增大系统处理容量
降级?
(2)降级:是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者 
问题解决后再打开

(3)限流:的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求 
进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理
*如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率
*如nginx的limit_conn模块,用来限制瞬时并发连接数
*如限制远程接口调用速率、限制MQ的消费速率
*根据网络连接数、网络流量、CPU或内存负载等来限流

1. YApi
https://github.com/YMFE/yapi
YApi是由去哪网前端团队开源的一款接口管理工具,功能强大,可以轻松的自己部署。而且支持使用docker部署,使用成本很低了。
使用docker部署可以参考这篇文章:https://www.jianshu.com/p/a97d2efb23c5
2. Rap2
https://github.com/thx/rap2-delos
Rap2是由阿里妈妈前端团队开源的一款接口管理工具,相对YApi来说,至少文档上面差一些,Github上没有太多介绍,也没提及用docker部署,但也是一个选择吧。
3. eolinker
https://www.eolinker.com/
eolinker是一个接口管理服务网站,如果不想自己部署YApi、Rap2的团队可以使用,免费版的功能对于小型团队来说足够了。
4. Postman
https://www.getpostman.com/
跨平台的管理工具,可以免费使用,支持mock,支持团队协作,免费版本的限制主要在于每个月1000次的限制,包括Mock请求、API请求等等,对于小型团队(3~5人)应该是足够了。
5. Paw
https://paw.cloud/
仅支持Mac平台,可以试用30天,正式版要49.99美元,不是特别推荐使用,毕竟不能跨平台。

API everything

API开发:

API管理:

API运维:

API网关:Zuul是Spring Cloud全家桶中的微服务API网关。

API知识点总结的更多相关文章

  1. vue API 知识点(2)---选项总结

    一.选项 / 数据 1.data 当一个组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例,如果 data 仍然是一个纯碎的对象,则所有的实例将被共享引用同一个 ...

  2. 关于iOS和OS X废弃的API知识点

    今天在查看苹果接口文档时,突然对于接口的声明知识点比较感兴趣,再网络找到下面这个比较不错的文章,记录一下并分享: 如你所知,已废弃(Deprecated)的API指的是那些已经过时的并且在将来某个时间 ...

  3. vue API 知识点(1)---全局 API 总结

    1.Vue.extend(options) 构造器,创建一个 子类 .参数是一个包含组件选项的对象 data 选项是特例,需要注意 在 Vue.extend() 中它必须是一个函数, <div ...

  4. vue API 知识点(3) --- 实例 总结

    一.实例 property 1.vm.$data Vue 实例观察的数据对象,Vue 实例代理了对其 data 对象 property 的的访问 2.vm.$props 当前组件接收到的 props ...

  5. 记vue API 知识点

    1. v-cloak指令:这个指令保持在元素上直到关联实例结束编译.和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标 ...

  6. unity3d API知识点随记

    1.transform.translate是增加transform面板相应的数值x,y,z是以本地坐标系为方向:transform.transformdirection是以世界坐标系为方向,可以去测试 ...

  7. vue API 知识点(4) --- 指令、特殊 attribute 、内置组件

    一.指令 1.v-text <span v-text="msg"></span> <!-- 两种写法是一样的 --> <span>{ ...

  8. HTML5学习笔记之History API

    这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的体会"h5"能够做什么,以及在实际项目中如何去合理的运用达到使用自如,完美 ...

  9. 大熊君学习html5系列之------History API(SPA单页应用的必备------重构完结版)

    一,开篇分析 Hi,大家好!大熊君又和大家见面了,(*^__^*) 嘻嘻……,这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例, 让大家一步一步的体会" ...

随机推荐

  1. 设计模式のInterpreter Patern(解释器模式)----行为模式

    一.问题产生背景 有一句话“小明和小龙是好朋友”,我想分析其中谁是人,我想分析他们的关系等多种需求,那么我们应该如何处理,如果为每一个关系都进行判断?显然不合适,我们可以将二者的关系进行抽象处理,然后 ...

  2. 隔离 docker 容器中的用户-------分享链接

    https://www.cnblogs.com/sparkdev/p/9614326.html

  3. tensorflow中的name_scope, variable_scope

    在训练深度网络时,为了减少需要训练参数的个数(比如LSTM模型),或者是多机多卡并行化训练大数据.大模型等情况时,往往就需要共享变量.另外一方面是当一个深度学习模型变得非常复杂的时候,往往存在大量的变 ...

  4. SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)

    本篇文章主要内容是介绍如何使用IntelliJ IDEA创建Spring + SpringMVC + MyBatis项目,下面会给出项目搭建的详细步骤以及相关的配置文件. 1. 创建maven项目   ...

  5. 第11章 AOF持久化

    AOF持久化在硬盘上保存的是对Redis进行的逻辑操作,类似InnoDB中的bin log.说白了就是你对一个Redis输入了哪些语句,AOF文件都会原封不动的保存起来,等到需要回复Redis的时候再 ...

  6. linux内存源码分析 - 伙伴系统(释放页框)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 翻了一下之前的文章,发现竟然忘记写内核是如何释放页框的,罪过. 释放页框很简单,其实只有几步 检查此页是否被其他 ...

  7. Python学到什么程度才可以去找工作?掌握这4点足够了!

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

  8. C# 相关面试试题简单的总结

    最近一个搞NET开发的朋友离职了,想让我给他找点关于NET的相关面试题,准备抱一下佛脚,迎接新的挑战. 我赶紧找到以前检索的各种宝典,试题,今天梳理一下关于NET的基础知识点. 1.面向对象语言的三大 ...

  9. JS prototype 生成机制

    默认的 prototype 属性是 Object() 对象,只不过每种类型或者自定义类型锁挂载的对象属性不同. 事实上,prototype 的生成是这样的: const Func = function ...

  10. webpack 中版本兼容性问题错误总结

    一定不要运行npm i  XXX  -g(-d) 一定要指定版本,尽量低版本,也不最新版本,会导致不兼容和指令不一样的问题. 1.安装webpack-dev-server 报错,说需要webpack- ...