• API知识点总结


    http://www.importnew.com/30031.html

    一.开发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网关。

  • 相关阅读:
    关于2019-nCoV事件中新媒体的作用
    评估移民宇宙计划
    关于2019-nCoV事件,分析自己的焦虑心理
    肺炎阴云仍未散去,今天捡到一个贝壳
    关于新型肺炎,重点是毒性
    提高效率的方法
    《白说》读书笔记
    MIPS下载运行busybox
    camera模组笔记
    求知领域
  • 原文地址:https://www.cnblogs.com/ningshare/p/10649914.html
Copyright © 2020-2023  润新知