SDK封装了部分常用的Restful API,例如用户注册、登陆、找回密码等等,具体的方法在XLinkRestKit。完整的Restful API文档在:OPEN API 开发指南
一、使用方式
用户可以直接调用SDK内部已经封装好的 Restful API:``
// 用户登陆
[XLinkRestKit authWithAccount:_account
password:_password
resource:resource
completionHandler:^(id _Nullable result, NSError * _Nullable err){
if (!err) {
//请求成功
} else {
//请求失败
}
}];
二、自定义 Restful
若 SDK 自带 Restful API 接口不能满足需求,开发者需自己实现,可通过如下方式:
1、使用 XLinkRestquest 处理接口
@interface XLinkRequest : NSObject
/** 请求的服务器地址,如果使用`useGeneralServer`的话,这个属性设置的值会被忽略 */
@property (nonatomic, copy, nullable) NSString *apiServer;
/** 请求的具体路径 */
@property (nonatomic, copy, nullable) NSString *api;
/** 请求的参数,如果使用`useGeneralParameters`的话,这个属性设置的值会被忽略 */
@property (nonatomic, strong, nullable) id parameters;
/** 请求的参数,如果使用`useGeneralHeaders`的话,这个属性设置的值会被忽略 */
@property (nonatomic, strong, nullable) NSDictionary<NSString *, NSString *> *headers;
/** 请求方法 */
@property (nonatomic, assign) XLinkHTTPMethodType httpMethod;
/** 请求超时时间 */
@property (nonatomic, assign) NSTimeInterval timeoutInterval;
/** 请求的开始时间 */
@property (assign, nonatomic) NSTimeInterval startTime;
/** 失败后的重试次数 */
@property (nonatomic, assign) NSUInteger retryCount;
/** 请求的唯一标识码 */
@property (copy, nonatomic) NSString *identifier;
/** 使用全局的服务器地址 */
@property (nonatomic, assign) BOOL useGeneralServer;
/** 使用全局的请求头 */
@property (nonatomic, assign) BOOL useGeneralHeaders;
/** 使用全局的参数 */
@property (nonatomic, assign) BOOL useGeneralParameters;
/** 使用SDK内部的access-token */
@property (assign, nonatomic) BOOL userGeneralAccessToken;
/** 请求成功的回调 */
@property (nonatomic, copy, readonly, nullable) XLinkSuccessBlock successBlock;
/** 请求失败的回调 */
@property (nonatomic, copy, readonly, nullable) XLinkFailureBlock failureBlock;
/** 请求完成的回调 */
@property (nonatomic, copy, readonly, nullable) XLinkFinishedBlock finishedBlock;
/** 创建默认的request 将会使用全局的服务器地址、全局的请求头、全局的参数 */
+ (instancetype)defaultRequest;
/** 创建默认的使用全局AccessTokenrequest 将会使用全局的服务器地址、全局的请求头、全局的参数 */
+ (instancetype)defaultAccessTokenRequest;
/** 清除所有的回调 */
- (void)cleanCallbackBlocks;
@end
因此,需要扩展HTTP请求的话,需要新建一个XLinkRequest对象,并且编辑好api、header、parameters、httpMethod等参数,然后使用以下方法,进行http的请求。
注:如果使用全局的apiSever,直接设置useGeneralServer这个属性为yes。否则需要设置apiServer这个属性为具体的api服务器地址。
/** 发送请求 @param request 具体的请求 @param finishedBlock 请求完成的回调 @return 请求任务的标识 */
+ (NSString *)sendRequest:(XLinkRequest *)request
onFinished:(nullable XLinkRestCompletionHandler)finishedBlock;
以下通过创建home的接口为例子讲解下是怎样具体扩展HTTP请求的。
接口的地址为:创建Home
//编辑XLinkRequest
XLinkRequest *req = [[XLinkRequest alloc] init];
//使用全局的api服务器地址
req.useGeneralServer = YES;
//使用全局的请求头
req.useGeneralHeaders = YES;
//请求超时时间
req.timeoutInterval = 10;
//请求方法
req.httpMethod = XLinkHTTPMethodTypePost;
//请求api
req.api = @"/v2/home";
//请求参数
req.parameters = @{@"name":@"my_home"};
//发送请求
[XLinkRestKit sendRequest:req onFinished:^(id _Nullable result, NSError * _Nullable err) {
if (err) {
NSLog(@"请求失败");
}else{
NSLog(@"请求成功");
}
}];
2、其它方式实现 API 接口
若开发者使用其他方式(例如AFNetworking)实现 API 接口,要注意 AccessToken 必须从SDK取出,即当开发者调用需要 accessToken 的接口时,必须使用 [XLinkSDK share].userModel.access_token返回的 accessToken ,并且注意不要缓存起来使用
当外部进行了其它的登录操作将导致SDK中维护的 accessToken 过期,此时将会导致SDK的一些功能是不正常或者不可用的,并可能导致SDK通知用户退出事件,同时清除当前缓存的所有数据
注意:accessToken 应该从 SDK 中随取随用,不要进行缓存,accessToken 的维护工作应该交由 SDK 进行