API知識點總結

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

一.開發api接口
開放給其餘人調用的api接口(短信接口,支付寶api)前端


二.api安全弱點
數據竊取(解決加密),數據篡改(解決MD5),數據泄露(爬蟲技術)(解決令牌)
1.加密(HTTPS傳輸-收費)
對稱(DES,AES)和非對稱(RSA)
公鑰加密(三方)-私鑰解密(我方)
私鑰加密(我方)-公鑰解密(三方)
Base64碼:ascii碼錶(64個可見字符)--6個一組從新編碼補0(2進制)--10進制--base64對照表java

2.MD5nginx

3.TOKEN令牌git

在工做中遇到的問題:
主鍵:不要設置自增的序列ID
大衆點評:商店自增的序列ID(容易將此網站的數據爬出來)
解決:
1.UUID.randomUUID().toString()
指在一臺機器上生成的數字,它保證對在同一時空中的全部機器都是惟一的。
2.有效時間
3.人機交互驗證碼github


三.性能優化:
1.Tomcat調優:web

2.MySql調優:redis

3.JVM調優:
jstaskdocker

-------------------------------------------------
事實上不少的API就是這樣實現的,人們首先發現有重複的代碼,而後製做統一的接口取代這些重複代碼,因而就產生了API。這是一件好事。json

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網關。

相關文章
相關標籤/搜索