axios中put的参数怎么传_iOS开发之如何通过PUT请求上传数据
一、什么是PUT请求
PUT请求是请求服务器存储一个资源,并用Request-URI作为其标识,跟POST类似,但不常用,PUT请求比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
二、POST和PUT的请求根本区别
有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源;有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源;还有的观点认为可以用PUT和POST中任何一个来做创建或者更新一个资源。这些观点都只看到了风格,争论起来也只是争论哪种风格更好,其实,用PUT还是POST,不是看这是创建还是更新资源的动作,这不是风格的问题,而是语义的问题。在HTTP中,PUT被定义为idempotent的方法,POST则不是,这是一个很重要的区别。
三、在代码中如何应用
我们先来看看AFNetworking中PUT和POST方法怎么用:
//POST方法
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
constructingBodyWithBlock:(nullable void (^)(id formData))block
progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
//PUT方法
- (nullable NSURLSessionDataTask *)PUT:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
发现参数中只有URLString和parameters,相对于POST请求来说少了一个formData的参数,没有地方把数据拼接上去,我曾经尝试把Data放到parameters中并不好用,在网上搜索了很多也没找到合适的解决办法,只能换一种方式了。
四、解决办法
在用AFNetworking进行PUT请求不好用之后,我想过是否用通过系统NSURLSessionTask来实现PUT请求,但是想想自己写太麻烦了,就尝试着用ASIHTTPRequest来尝试一下,发现ASIHTTPRequest还是很好用的
下面贴出代码:
- (void)uploadData:(NSData *)data uploadUrl:(NSString *)uploadUrl {
ASIHTTPRequest * fileUpRequest = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:uploadUrl]];
fileUpRequest.delegate = self;
//设置请求超时时间为60秒
[fileUpRequest setTimeOutSeconds:60.f];
//设置请求超时时间后再次尝试请求的次数
[fileUpRequest setNumberOfTimesToRetryOnTimeout:2];
//将data拼接进去
[fileUpRequest appendPostData:data];
//设置请求方式为PUT
[fileUpRequest setRequestMethod:@"PUT"];
//设置上传失败的回调方法
[fileUpRequest setDidFailSelector:@selector(uploadFailed:)];
//设置上传成功的回调方法
[fileUpRequest setDidFinishSelector:@selector(uploadFinished:)];
//显示精确的上传进度
fileUpRequest.showAccurateProgress = YES;
//开始异步请求
[fileUpRequest startAsynchronous];
}
总结
到这里我的问题已经解决,以上就是这篇文章的全部内容了,希望本文的内容对各位iOS开发者们能有所帮助,如果有疑问大家可以留言交流。
axios中put的参数怎么传_iOS开发之如何通过PUT请求上传数据相关推荐
- ckeditor 图片上传_开发问题:Django使用ckeditor上传到七牛云
介绍 最近正在使用Django开发一个项目,有一个需求是需要在后台,使用富文本编辑器,去自定义一些内容.会涉及到图片的上传.我准备把上传的内容存储到七牛里面,不想放在服务器上面.碰到一些问题,总结一下 ...
- Android中使用retrofit2进行网络get请求查询数据和post请求上传文件
场景 Retrofit2 Retrofit 是对 OkHttp 的封装,是主流的网络框架. 适用于Android 和 Java 的类型安全的HTTP客户端,由Square提供的. Retrofit是一 ...
- elementui中同时上传多个文件_2019-12-19 element-ui文件上传 一次请求上传多个文件...
最近在做项目的时候有一个需求,需要导入word文档,并且需要支持多选.element-ui 的 upload 组件支持多选文件,只需要配置参数 multiple 为 true 即可.但是这个组件默认会 ...
- 【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。
在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录. 我使用UUID生成8级目录,在webapp下创建目录,将图片传进 ...
- php文件上传并保存路径到数据库,thinkphp表单上传文件并将文件路径保存到数据库中?...
上传单个文件,此文以上传图片为例,上传效果如图所示 创建数据库upload_img,用于保存上传路径 CREATE TABLE `seminar_upload_img` ( `id` int(11) ...
- uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)
前言 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能. 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseI ...
- 大文件分片上传前端框架_js实现大文件分片上传的方法
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- php多图上传插件ios,yii2组件之多图上传插件FileInput的详细使用
作者:白狼 出处:http://www.manks.top/yii2_multiply_images.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...
- java action 上传文件_JavaWeb框架_Struts2_(七)-----文件的上传和下载
1. 前言 这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 2. 具体内容 2.1Struts2文件上传 2.1.1单文件上传 ...
最新文章
- 自动化网络拓扑 包容多设备类型——湖南省高速公路邵怀高速公路建设开发有限公司...
- linux内核的中断上下文,Linux操作系统中中断上下文中的互斥
- 广义平稳随机过程定义_广义平稳随机过程全解.ppt
- twitter mysql_twitter-mysql改进点
- 机器学习实战9-运行Tensorflow(california_housing数据集)
- Spring AOP源码分析(二)JDK动态代理和CGLIB介绍
- mysql导入 内存溢出_Solr Dataimporthandler 导入MySQL 内存溢出。
- 三位数除以两位数竖式计算没有余数_北京版二年级数学下册第一单元有余数的除法练习题【都有电子版】...
- 油猴脚本(Tampermonkey)的安装和使用小结
- java获取oracle自增_Oracle自增列创建方法
- [转贴][教学] 教你如何打飞机 ^_^
- 用计算机怎么谈黑人团队,光遇黑人抬棺乐谱怎么弹奏 计算机演奏乐谱16
- python爬虫企业工商信息_Python 爬虫进阶必备 | 企业信用公示系统公告加密解析...
- 华为Mate S发布:余承东说要在圣诞季和三星、苹果正面开战---ESM
- 实现变色TextView及ViewPager指示器(原来可以这么简单)
- 读懂Wi-Fi 6:看这本白皮书就够了!(附全文下载)
- 在线考试视频学习平台
- (转自zee的原创)OATS 正交表测试策略
- 从零开始搭建一个HTTPS网站
- 存档修改 html,3ds存档修改图文教程【利用SaveDataFiler】