compile 'com.seelyn:api-wrap-boot:{version}'
<dependency>
<groupId>com.seelyn</groupId>
<artifactId>api-wrap-boot</artifactId>
<version>{version}</version>
</dependency>
@SpringBootApplication
@EnableApiWrap
public class WrapWebApplication {
public static void main(String[] args) {
SpringApplication.run(WrapWebApplication.class, args);
}
}
@ApiWrap
@PostMapping(value = "/web")
public WrapRequest<DefaultWrapData> web(@RequestBody WrapRequest<DefaultWrapData> request) {
return request;
}
@ApiWrap(value=CustomWrapHandler.class)
Класс CustomWrapHandler должен реализовывать интерфейс WrapHandler.
public class WrapRequest<T extends WrapData> {
private String appKey;
private String signature;
private long timestamp;
private int nonce;
private T data;
//setter getter省略....
}
import com.seelyn.apiwrap.WrapData;
import com.seelyn.apiwrap.annotation.SignIgnore;
public class DefaultWrapData extends WrapData {
// SignIgnore 注解标识标识忽略属性用于签名
@SignIgnore
private String name;
private String url;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
@Autoware
private WrapStore wrapStore;
// 存储密钥
wrapStore.putSecret(appKey, appSecret);
#===========api wrap===========
# app密钥,若用户没有自定义,则使用此
api.wrap.secret=testjjhdsa
# 单位秒,请求时间和服务器时间不能超过300秒
api.wrap.legal-time=300
# 若没有redis配置,wrapStore为本地存储
# 若配置了redis,则wrapStore为redis存储
#===========api wrap redis=============
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0
compile 'com.seelyn:api-wrap-client:{version}'
<dependency>
<groupId>com.seelyn</groupId>
<artifactId>api-wrap-client</artifactId>
<version>{version}</version>
</dependency>
DefaultWrapData WrapData = new DefaultWrapData();
WrapClient wrapClient = WrapClient.create(appKey, appSecret);
WrapRequest<DefaultWrapData> request = wrapClient.wrap(WrapData)
// request 为带签名信息的对象
@Service
class CustomWrapStore extends RedisWrapStore {
}
Расширьте класс RedisWrapStore или реализуйте интерфейс WrapStore для создания собственного хранилища. Система автоматически будет использовать ваше пользовательское хранилище.
// 自定义WrapHandler, 使用@Component注入到spring中管理
@Component
public class CustomWrapHandler implements WrapHandler {
@Override
public String getAppSecret(String appKey) {
return null;
}
@Override
public String getSignature(String appKey, WrapRequest<WrapData> request) {
return null;
}
@Override
public void isLegalTime(long timestamp) {
}
@Override
public void isReplayAttack(String appKey, long timestamp, int nonce, String signature) {
}
}
// ApiWrap中指定CustomWrapHandler.class类,则系统会根据此类型从Spring中获取对应的实例
@ApiWrap(value = CustomWrapHandler.class)
@PostMapping(value = "/web")
public WrapRequest<DefaultWrapData> custom(@RequestBody WrapRequest<DefaultWrapData> request) {
return request;
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )