API接口调用

API网关设计:javascript

一种是经常使用的基于HTTP网络协议java

另外一种RPC调用(当下火的微服务spring cloud和以前的Dubbo框架)spring

不一样系统之间互调时,为达到调用方确保被受权,需提供被调方要求的token网络

如下是百度API接口的token获取代码框架

public static void main(String[] args) { String user_key = "d520c05ea2ab40568f119154ac7de67f"; //实际使用时客户需修改成本身的user_key String user_secret = "825a1efa5b29c29272ae8a6c5286fdrf"; //实际使用时客户需修改成本身的user_secret long timestamp = Integer.valueOf(String.valueOf(System.currentTimeMillis()/1000)); String data = user_key + timestamp; String hmac = encode(data, user_secret); System.out.println(hmac); } private static String toHexString(byte[] bytes) { Formatter formatter = new Formatter(); for (byte b : bytes) { formatter.format("%02x", b); } return formatter.toString(); } private static String encode(String data, String key) { String token = null; try { SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(signingKey); token = toHexString(mac.doFinal(data.getBytes())); } catch (Exception e) { e.printStackTrace(); } return token; } 还有就是公司对应的java.security.*包中的UUID类 String tokenKey = UUID.randomUUID().toString().toLowerCase().replaceAll("-", "") + "|" + DateUtils.getTimestamp().getTime();         String newToken = UserPassword.getInstance().encrypt(tokenKey); 而token的获取也须要提供项目id和secret秘钥(id实际为事前分配给的,相似于百度的初测分配id)