NetworkModule
pod 'NetworkModule'
基本介绍
配置服务端接口地址
[AppContext appContext].domain = @"https://fbdocs.cn/";
BaseReques基类
#import "XXXBaseRequest.h"
#import "XXXRequestConfiguration.h"
typedef NS_OPTIONS(NSUInteger, RequestSerializerType) {
RequestSerializerTypeHTTP = 0,
RequestSerializerTypeJSON
};
typedef NS_OPTIONS(NSUInteger, ResponseSerializerType) {
ResponseSerializerTypeHTTP = 0,
ResponseSerializerTypeJSON = 1,
ResponseSerializerTypeXML
};
@protocol XXXRequestDelegate <NSObject>
@required
- (NSString *)requestMethod;
- (id)requestParams; //请求参数
- (NSString *)requestUrl; //请求的接口名称
@optional
- (NSString *)baseUrl; //请求的接口域名地址
- (NSString *)apiVersion;//接口版本
- (NSUInteger)requestSerializerType;
- (NSUInteger)responseSerializerType;
- (NSTimeInterval)requestTimeoutInterval; //每个请求的超时时间
- (NSTimeInterval)cacheInVaild;
@end
@protocol XXXRequestParametersDelegate <NSObject>
/**
配置请求参数方法
*/
@required
- (id)paramsWithRequest:(XXXRequest *)request;
@end
@protocol XXXRequestDataReformer <NSObject>
/**
格式化返回结果协议方法
*/
@required
- (id)request:(XXXRequest *)request reformData:(NSDictionary *)data;
@end
@interface XXXRequest : XXXBaseRequest<XXXRequestDelegate>
@property (strong, nonatomic) NSURLSessionDataTask *requestDataTask; //该请求的requestTask对象
@property (assign, nonatomic) BOOL ignoreCache; //忽略缓存
@property (assign, nonatomic) NSInteger timedOutCount; //超时次数
@property (copy, nonatomic) XXCallbackWithRequestBlock completionBlock;
@property (weak, nonatomic) id<XXXRequestParametersDelegate> paramsDelegate; //配置参数委托对象
@property (nonatomic) id fetchedRawData;
@property (nonatomic, strong) NSData *responseObject;
@property (nonatomic, strong) NSError *error;
- (void)start;
- (id)fetchDataWithReformer:(id<XXXRequestDataReformer>)reformer;
@end
发起请求,每个请求类都必须继承 BaseRequest 基类;
- (void)testActionWithCallBack:(void (^)(NSError *))completionBlock {
self.userLoginRequest = [[TestRequestObj alloc] init];
_userLoginRequest.paramsDelegate = self;
_userLoginRequest.completionBlock = completionBlock;
[self.userLoginRequest start];
}
- (id)fetchDataWithReformer{
return [self.userLoginRequest fetchDataWithReformer:nil];
}
- (id)paramsWithRequest:(XXXRequest *)request {
return @{@"key":@"value"};
}