colly_wyx
2018-05-03 b8a82d561917a4336214225f65f4488d977c5fb1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//
//  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