// // PhalApiClient.h // PhalApiClientDemo // // Created by Aevit on 15/10/17. // Copyright © 2015年 Aevit. All rights reserved. // #import #import "PhalApiClientFilter.h" #if 1 # define PALog(x, ...) NSLog(x, ## __VA_ARGS__); #else # define PALog(x, ...) #endif typedef void(^HttpCompleteBlock)(id resultObject); typedef void(^HttpFailureBlock)(id error); typedef void(^FormDataBlock)(id formData); @interface PhalApiClient : NSObject @property (nonatomic, copy) NSString *host; @property (nonatomic, copy) NSString *service; @property (nonatomic, strong) NSMutableDictionary *params; @property (nonatomic, assign) float timeout; @property (nonatomic, strong) PhalApiClientFilter *filter; #pragma mark - generate a client /** * 生成单例 * * @return 单例PhalApiClient */ + (PhalApiClient*)sharedClient; /** * 生成非单例 * * @return 非单例PhalApiClient */ + (PhalApiClient*)create; #pragma mark - configure url and params /** * 重复查询时须重置请求状态,包括接口服务名称、接口参数和超时时间 * * @return PhalApiClient实例 */ - (PhalApiClient*)reset; /** * 设置接口域名 * 如果整个客户端只有一个接口host,可以在"commonInit"方法设置好host,这样外部就可以不用调用withHost方法了 * * @param host 域名 * * @return PhalApiClient实例 */ - (PhalApiClient*)withHost:(NSString*)host; /** * 设置将在调用的接口服务名称,如:Default.Index * * @param service 接口服务名称 * * @return PhalApiClient实例 */ - (PhalApiClient*)withService:(NSString*)service; /** * 设置接口参数,此方法是唯一一个可以多次调用并累加参数的操作 * * @param params 参数 * * @return PhalApiClient实例 */ - (PhalApiClient*)withParams:(NSDictionary*)params; /** * 设置过滤器,与服务器的DI().filter对应 * * @return PhalApiClient实例 */ - (PhalApiClient*)withFilter:(PhalApiClientFilter*)filter; /** * 设置超时时间,单位毫秒 * * @param timeout 超时时间,单位秒 * * @return PhalApiClient实例 */ - (PhalApiClient*)withTimeout:(float)timeout; #pragma mark - request /** * 发起接口请求(POST请求) * * @param completeBlock 请求成功的回调 * @param failureBlock 请求失败的回调 * * @return 请求实例 */ - (id)request:(HttpCompleteBlock)completeBlock failureBlock:(HttpFailureBlock)failureBlock; /** * 发起接口请求(提交表单) * * @param formDataBlock 表单内容 * @param completeBlock 请求成功的回调 * @param failureBlock 请求失败的回调 * * @return 请求实例 */ - (id)requestWithFormDataBlock:(FormDataBlock)formDataBlock completeBlock:(HttpCompleteBlock)completeBlock failureBlock:(HttpFailureBlock)failureBlock; #pragma mark - utils /** * 以get形式打印整个url,方便服务端开发人员调试 * * @return 整个url */ - (NSString*)printTotalUrlStr; @end