用原生java给第三方提供SDK的简洁实现

如果你搜到了这篇文章,说明你的项目你可能正在做一个开放平台,而且初具规模,需要给第三方提供SDK。
对外开放平台,一般可以只提供一个http接口+安全校验方式,如生成签名,或者OAuth2,当然如果能提供一个SDK给用户,那再好不过了。
比如阿里、腾讯云服务的api接口,都有SDK。他们的比较复杂,有时间可以继续学习学习,继续完善我写的这个。

这里是一个纯java,不依赖第三方重量级组件(其实依赖了一个json工具) 的简洁版的实现。当然如果你给别人提供SDK,也不能有过重的依赖,比如你引入一个Retrofit等类似声明式的http调用组件。
当然它还不完善,比如分页数据解析等等case还没写,有时间了还会继续完善它,我写这个文章主要是说这是一种思路,简单实现的思路。
下面是一个使用的demo:

/**
 * 商品api
 */
public interface GoodsApi {

    @Api(value="goods.Goods.queryWithSpec", paged=false)
    GoodsSearchResponse search(GoodsSearchRequest goodsSearchRequest);
}

/**
 * 模拟客户端调用
 */
public class TestClient {
    public static void main(String[] args) {
        /**********模拟客户端使用***********/
        String appId = "1001";
        String appSecret = "xxxxx";
        String apiDomain = "http://localhost:8080";
        //初始化SDK客户端
        Client client = new DefaultClient(appId,appSecret,apiDomain);
        GoodsApi proxy = ApiFactory.getApi(client, GoodsApi.class);
        GoodsSearchRequest request = new GoodsSearchRequest();
        request.setGoodsNo("698123762");
        request.setGoodsName("黑人牙膏");
        GoodsSearchResponse response = proxy.search(request);
    }
}
 

如你所看见的,goodsapi只是声明了一个interface接口,加上注解,实现思路非常简单又传统,用AOP拦截自定义注解上的接口名字,产生代理类,发起http调用。

源码在这里,如果对你有帮助,点个小星星支持一下吧:
https://gitee.com/haoyangli/open-sdk

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在React Native中封装原生第三方SDK的步骤如下: 1. 创建一个原生模块(Native Module),以便React Native应用程序可以与原生代码进行交互。对于iOS,你需要创建一个Objective-C或Swift类;对于Android,你需要创建一个Java类。 2. 在原生模块中编写代码,调用第三方SDK的API并将其封装为JavaScript可以调用的函数。你可以使用React Native提供的RCT_EXPORT_MODULE宏将该模块导出到JavaScript中。例如,下面是一个在iOS中封装Facebook SDK的例子: ```objective-c #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <React/RCTBridgeModule.h> @interface MyFacebookModule : NSObject <RCTBridgeModule> @end @implementation MyFacebookModule RCT_EXPORT_MODULE(); RCT_EXPORT_METHOD(login:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager logInWithPermissions:@[@"public_profile", @"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { reject(@"login_error", error.localizedDescription, error); } else if (result.isCancelled) { reject(@"login_cancelled", @"User cancelled login", nil); } else { resolve(result.token.tokenString); } }]; } @end ``` 这个模块导出了一个名为`login`的函数,该函数会登录Facebook,并返回一个Promise,该Promise将在登录成功后解析为一个Facebook访问令牌,或在登录失败时拒绝。 3. 在JavaScript中导入原生模块,并使用它提供的函数。例如,你可以使用以下代码在React Native应用程序中调用上述iOS模块: ```javascript import { NativeModules } from 'react-native'; const { MyFacebookModule } = NativeModules; MyFacebookModule.login() .then(token => console.log(`Facebook access token: ${token}`)) .catch(error => console.error(`Failed to login: ${error}`)); ``` 这个代码导入了名为`MyFacebookModule`的原生模块,并调用其`login`函数。当该函数返回时,它会返回一个Promise,你可以使用该Promise来处理成功或失败的情况。 通过将原生第三方SDK封装到React Native模块中,你可以轻松地在React Native应用程序中使用该SDK,并将其与JavaScript代码无缝集成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值