api-project使用帮助文档

api-project常用公共业务开发API文档

个人日常api-project使用样例

  • api引入
  • 接口签名
  • 缓存工厂和它的老朋友自动更新
  • LaTex数学公式
  • UML序列图和流程图
  • 离线写博客
  • 导入导出Markdown文件
  • 丰富的快捷键

api引入(Meavn)

meavn仓库地址
<repositories>
     <repository>
       <id>api-project-mvn-rep</id>
       <url>https://raw.github.com/ccycc88/mvn-repo/master/</url>
       <snapshots>
          <enabled>true</enabled>
          <updatePolicy>always</updatePolicy>
       </snapshots>
    </repository>
  </repositories>
  meavn依赖
  <dependency>
      <groupId>com.api</groupId>
      <artifactId>api-project</artifactId>
      <version>0.0.1-SNAPSHOT</version>
  </dependency>

接口签名

接口签名主要用于服务对外提供接口的一种安全认证。服务端为需要接口访问应用提供唯一的appId与appId对应的keyt。
应用请求服务端接口需要依据约定算法协议生成对应的签名串。服务端接收到请求参数,依据appId及对应的keyt和参与签名的参数进行认定。

签名算法

  • 签名参数去除空值参数
  • 依据参数名递减排序
  • 将参数_name参数_val&参数_name参数_val进行连接
  • 连接的字符串&keyt
  • 最终字符串通过MD5生成最终签名值

创建签名串

        Map<String, String> m = Maps.newHashMap();
		m.put("34567", "345");
		m.put("fh", "2345");
		m.put("kl", "457");
		String keyt = "keyt23";

		String sign = ApiSignUtil.buildSign(m, keyt);
生成签名串
appId与keyt为一一对应,其他参数是一些任意参数,根据业务需求。

验证签名串

        Map<String, String> m = Maps.newHashMap();
		m.put("34567", "345");
		m.put("fh", "2345");
		m.put("kl", "457");
		m.put("sign", "3529D3639A445BBC9A7EFCC30543F5F5");
		String keyt = "keyt23";

		boolean succ = ApiSignUtil.validateSign(m,keyt);
生成签名串
通过appId获取keyt,依据请求参数和keyt进行验证请求是否合法。

缓存工厂和它的老朋友自动更新

为了应用执行效率,及缓存不可缺少的业务场景。缓存工厂通用管理缓存工具,使代码整洁易懂。在缓存的实现中你可以使用redis,memorycache或集合等待。
当然缺少不了他的老朋友自动更新。

缓存实现


import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;

import com.google.common.collect.Maps;

public class RuleCache extends Cache{
    

	private static final String CACHE_PREFIX = "rule";
	
	//保存的缓存
	private Map<String, Map<String, String[]>> rcache = Maps.newHashMap();
	private ReentrantLock lock = new ReentrantLock();
    //初始化缓存
	@Override
	public void init() {
    
		// TODO Auto-generated method stub
		rcache.put("",null);
	}
	//用于周期性刷新缓存
	@Override
	public void refresh() {
    
        // TODO Auto-generated method stub
		lock.lock();
		try {
    
			
			rcache.clear();
			rcache.put("ddd", null)
		} finally {
    
			// TODO: handle finally clause
			lock.unlock();
		}	
	}
   //重写该方法用于判断是否存在
	@Override
	public boolean exist(String... key) throws Exception {
    
		// TODO Auto-generated method stu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值