如何设计一个安全的对外接口,总结了这几点

本文探讨了设计安全对外接口的关键点,包括定义接口、创建令牌、数字签名、接口高可用性及限流策略。强调了验签、Token验证和负载均衡在确保接口安全和性能中的作用,同时提出了处理高并发和高可用的解决方案,如集群、缓存和协议加密。
摘要由CSDN通过智能技术生成

做接口需要考虑的问题

什么是接口

接口无非就是客户端请求你的接口地址,并传入一堆该接口定义好的参数,通过接口自身的逻辑处理,返回接口约定好的数据以及相应的数据格式。

接口怎么开发

接口由于本身的性质,由于和合作方对接数据,所以有以下几点需要在开发的时候注意:

1.定义接口入参:写好接口文档

2.定义接口返回数据类型:一般都需要封装成一定格式,确定返回json还是xml报文等

如何设计一个安全的对外接口,老司机总结了这几点

见如下返回数据定义格式:

package com.caiex.vb.model;
 
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
 
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Result", propOrder = { "resultCode", "resultMsg" })
public class Result implements Serializable {
 private static final long serialVersionUID = 10L;
 protected int resultCode;
 protected String resultMsg;
 
 public int getResultCode() {
  return this.resultCode;
 }
 
 public void setResultCode(int value) {
  this.resultCode = value;
 }
 
 public String getResultMsg() {
  return this.resultMsg;
 }
 
 public void setResultMsg(String value) {
  this.resultMsg = value;
 }
}
package com.caiex.vb.model;
 
import java.io.Serializable;
 
public class Response implements Serializable {
 
 private static final long serialVersionUID = 2360867989280235575L;
 
 private Result result;
 
 private Object data;
 
 public Result getResult() {
  if (this.result == null) {
   this.result = new Result();
  }
  return result;
 }
 
 public void setResult(Result result) {
  this.result = result;
 }
 
 public Object getData() {
  return data;
 }
 
 public void setData(Object data) {
  this.data = data;
 }
 
}

3.确定访问接口的方式,get or post等等,可以根据restful接口定义规则RESTful API:RESTful API

4.定义一套全局统一并通用的返回码,以帮助排查问题;

 public static int NO_AGENT_RATE = 1119;  //未找到兑换率
 
 public static int SCHEME_COMMIT_FAIL = 4000;  //方案提交失败
 
 public static int SCHEME_CONFIRMATION = 4001;  //方案确认中
 
 public static int SCHEME_NOT_EXIST = 4002;  //方案不存在
 
 public static int SCHEME_CANCEL= 4005;  //方案不存在
 
 //。。。。

5.统一的异常处理:应该每个系统都需要一套统一的异常处理

package com.caiex.vb.interceptor;
 
import javax.servlet.http.HttpServletRequest;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
 
import com.caiex.vb.model.Response;
 
@ControllerAdvice
@Respons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值