SweetREST 是一个为 Cocoa 应用创建 http 请求服务
的微型库。该库允许发送常见的 http 请求,如 GET、POST、PUT、PATCH、HEAD 和 DELETE。这是惊人的 AFNetworking 的轻量级版本,增加了一些额外的功能,例如漂亮的 错误处理。
要开始发送请求,您只需要使用 NSURLSession 和您后端的 baseURL 进行 SweetREST 初始化。
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
self.sweetRest = [[SPSweetRest alloc] initWithSession:session baseURL:[NSURL URLWithString:@"http://example.com/json/api/"]];
发送简单的 GET 请求。
NSDictionary *params = @{@"name" : @"serj"};
[self.sweetRest GET:@"person" params:params completion:^(id responseObject, NSError *error) {
if(! error) {
//Success
}
else {
//Failure
}
}];
错误处理是该库的主要功能。与 AFNetworking 不同,SweetREST 在 NSError 中创建了与代码相对应的 HTTP 状态代码。例如,您的后端响应了 401 未授权,您可能需要处理它并过期认证令牌。
...
if (error.code == 401) {
[self.sweetRest removeValueForHTTPHeaderField:@"XX-MY-SWEET-AUTH-TOKEN"];
}
一个功能是 SPSeweetRestDelegate
协议。该协议允许监听来自服务器的每个有效的(带有状态代码为 2xx 和 JSON 内容类型)响应
- (void)sweetRest:(SPSweetRest *)sweetRest didReceiveResponse:(NSHTTPURLResponse *)response
{
// Ckeck for token
NSString *token = response.allHeaderFields[@"AUTH-TOKEN"];
//Status code
NSInteger code = response.statusCode;
// Do somthing here..
}
或任何失败响应
- (void)sweetRest:(SPSweetRest *)sweetRest didFailResponse:(NSHTTPURLResponse *)response error:(NSError *)error
{
// Do somthing here
}
此外,您还可以提供一些自定义错误并接受每个响应
- (BOOL)sweetRest:(SPSweetRest *)sweetRest shouldAcceptResponse:(NSHTTPURLResponse *)response forObject:(id)responseObject provideError:(NSError **)error
{
NSInteger code = response.statusCode;
if (code == 201) {
// Provide some custom error
NSDictionary *userInfo = @{NSLocalizedDescriptionKey : @"I do not like 201 status code!"};
*error = [NSError errorWithDomain:SPSeweetRestErrorDomain code:777 userInfo:userInfo];
return NO;
}
return YES;
}
SweetREST 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。