restful是一种设计风格,知识提供一组设计原则和约束条件,主要用于客户端和服务器交互类的软件;
restful使用不同的http访问方法请求URL,由服务器端人员开发,前端人员使用,
http的请求方法有get ,post,head,put,delete,options,trace,connect,patch
get------获取数据----------datatask
post-------新增上传数据--------uploadtask
put-------修改上传数据------------uploadtask(需要用户名密码)
delete------删除数据--------------datatask(需要用户名密码)
__________________________________________________________________________
put 请求方法
- (void)uploadFile{
//1.session
NSURLSession *session =[NSURLSessionsharedSession];
NSURL *url = [NSURLURLWithString:@"http://127.0.0.1/uploads/2.JPG"];
//3请求
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
//put方式提交数据
request.HTTPMethod = @"put";
//Authorization: Basic YWRtaW46YWRtaW4= ----- admin:admin
[request setValue:[selfgetAuthWithUsername:@"admin"password:@"admin"]forHTTPHeaderField:@"Authorization"];
//文件的URL
NSURL *fileURL = [[NSBundlemainBundle] URLForResource:@"2.JPG"withExtension:nil];
//2.创建上传任务
NSURLSessionUploadTask *uploadTask = [sessionuploadTaskWithRequest:request fromFile:fileURL completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError * _Nullable error) {
/*
1.响应体
2.响应头
3.错误
*/
NSLog(@"%@",data);
NSLog(@"%@",response);
}];
//4 开启
[uploadTask resume];
}
//拼接Authorization
//Authorization: Basic YWRtaW46YWRtaW4= ----- admin:admin
-(NSString *)getAuthWithUsername:(NSString *)username password:(NSString *)password{
//1.拼接用户名和密码 admin:admin
NSString *str = [NSStringstringWithFormat:@"%@:%@",username,password];
//YWRtaW46YWRtaW4=
NSString *base64String = [selfbase64Encode:str];
return [NSStringstringWithFormat:@"Basic %@",base64String];
}
//base64编码
-(NSString *)base64Encode:(NSString *)str{
NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];
return [database64EncodedStringWithOptions:0];
}
__________________________________________________________________________
#import "ViewController.h"
@interface ViewController ()<NSURLSessionTaskDelegate>
@property(nonatomic,strong)NSURLSession *session;
@end
@implementation ViewController
//懒加载
-(NSURLSession *)session{
if(!_session){
NSURLSessionConfiguration *config = [NSURLSessionConfigurationdefaultSessionConfiguration];
_session = [NSURLSessionsessionWithConfiguration:config delegate:selfdelegateQueue:[NSOperationQueuemainQueue]];
}
return_session;
}
- (void)viewDidLoad {
[superviewDidLoad];
[selfdeleteFile];
}
//删除文件 delete请求
-(void)deleteFile{
NSURL *url = [NSURLURLWithString:@"http://127.0.0.1/uploads/2.JPG"];
//设置请求--删除
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
//delete方式删除数据
request.HTTPMethod = @"delete";
//Authorization: Basic YWRtaW46YWRtaW4= ----- admin:admin
[request setValue:[selfgetAuthWithUsername:@"admin"password:@"admin"]forHTTPHeaderField:@"Authorization"];
//datatask
NSURLSessionDataTask *task = [self.sessiondataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"%@",data);
NSLog(@"%@",response);
}];
//开启操作
[task resume];
}