132 lines
2.9 KiB
Objective-C
132 lines
2.9 KiB
Objective-C
//
|
||
// PhalApiClient.h
|
||
// PhalApiClientDemo
|
||
//
|
||
// Created by Aevit on 15/10/17.
|
||
// Copyright © 2015年 Aevit. All rights reserved.
|
||
//
|
||
|
||
#import <Foundation/Foundation.h>
|
||
#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
|