可用于nodejs的SuperAgent(ajax API)
简单示例:
import request from 'superagent';//引用声明 request.post(api).withCredentials()//跨域.end((err, res) => {if (res.ok) {const json = JSON.parse(res.text);} else {console.log('获取失败');}});
1、get 方式
当使用get
请求传递查询字符串的时候,用.query()
方法,传递一个对象就可以,下面的代码将产生一个/search?query=Manny&range=1..5&order=desc
请求:
request.get('/search').query({ query: 'Manny' }).query({ range: '1..5' }).query({ order: 'desc' }).end(function(res){});
或者传一个单独的大对象:
request.get('/search').query({ query: 'Manny', range: '1..5', order: 'desc' }).end(function(res){});
.query()
方法也允许传递字符串:
request.get('/querystring').query('search=Manny&range=1..5').end(function(res){});
或者字符串拼接:
request.get('/querystring').query('search=Manny').query('range=1..5').end(function(res){});
2、post 请求
一个典型的json post请求看起来就像下面的那样,设置一个合适的Content-type
头字段,然后写入一些数据,在这个例子里只是json字符串:
request.post('/user').set('Content-Type', 'application/json').send('{"name":"tj","pet":"tobi"}').end(callback)
因为json非常通用,所以就作为默认的Content-type
,下面的例子跟上面的一样:
request.post('/user').send({ name: 'tj', pet: 'tobi' }).end(callback)
或者调用多次.send()
方法:
request.post('/user').send({ name: 'tj' }).send({ pet: 'tobi' }).end(callback)
默认发送字符串,将设置Content-type
为application/x-www-form-urlencoded
,多次调用将会通过&
来连接,这里的结果为name=tj&pet=tobi
:
request.post('/user').send('name=tj').send('pet=tobi').end(callback);
superagent的请求数据格式化是可以扩展的,不过默认支持form
和json
两种格式,想发送数据以application/x-www-form-urlencoded
类型的话,则可以简单的调用.type()
方法传递form
参数就行,这里默认是json
,下面的请求将会postname=tj&pet=tobi
内容:
request.post('/user').type('form').send({ name: 'tj' }).send({ pet: 'tobi' }).end(callback)
3、设置content-type
常见的方案是使用.set()
方法:
request.post('/user').set('Content-Type', 'application/json')
一个简便的方法是调用.type()
方法,传递一个规范的MIME
名称,包括type/subtype
,或者一个简单的后缀就像xml
,json
,png
这样,例如:
request.post('/user').type('application/json')request.post('/user').type('json')request.post('/user').type('png')
4、设置接受类型
跟.type()
简便方法一样,这里也可以调用.accept()
方法来设置接受类型,这个值将会被request.types
所引用,支持传递一个规范的MIME
名称,包括type/subtype
,或者一个简单的后缀就像xml
,json
,png
这样,例如:
request.get('/user').accept('application/json')request.get('/user').accept('json')request.get('/user').accept('png')
5、跨域
.withCredentials()
方法可以激活发送原始cookie的能力,不过只有在Access-Control-Allow-Origin
不是一个通配符(*),并且Access-Control-Allow-Credentials
为’true’的情况下才行.
request.get('http://localhost:4001/').withCredentials().end(function(res){assert(200 == res.status);assert('tobi' == res.text);next();})
转载于:https://www.cnblogs.com/luoxiaowei/p/6917711.html
可用于nodejs的SuperAgent(ajax API)相关推荐
- 调用Nodejs版网易云API时,遇到code:-462报错解决方案
在今年(2023)四月份,我在调用基于Nodejs版网易云API时,突然出现了下面这个报错: 很明显,网易云在调用API时需要我们进行账户验证,我很自然想到可能是需要登录.那么查阅API文档,我们可以 ...
- eclipselink_EclipseLink MOXy和用于JSON处理的Java API –对象模型API
eclipselink 用于JSON处理的Java API(JSR-353)是作为Java EE 7的一部分引入的用于生成和使用JSON的Java标准.JSR-353包括对象(类似于DOM)和流(类似 ...
- EclipseLink MOXy和用于JSON处理的Java API –对象模型API
用于JSON处理的Java API(JSR-353)是用于生成和使用JSON的Java标准,它是Java EE 7的一部分引入.JSR-353包括对象(类似于DOM)和流(类似于StAX)API. 在 ...
- ajax提交输入内容,当输入用于提交时,AJAX表单提交
我有一位设计师坚持通过点击回车和由AJAX提交的帖子和由Fancybox提供的回复提交的单个表单域.问题是return false不能阻止页面的提交.当输入用于提交时,AJAX表单提交 我在那里做错了 ...
- jdbc mysql api_JDBC---一种用于执行SQL的Java API
JDBC是一种用于执行SQL的Java API,它本身是个商标名,但很多人把它认为是Java Database Connectivity(Java 数据库连接)的缩写. JDBC是一组访问数据库的AP ...
- ajax访问带token abp,ABP官方文档(三十八)【AJAX API】
6.6 ABP表现层 - AJAX API 6.6.2.1 AJAX操作问题 现代的应用经常会使用AJAX,尤其是单页应用,几乎是和服务器通信的唯一手段,执行AJAX通常会有以下步骤: 基本上:为了执 ...
- 微软发布用于Serverless架构的Azure API Management
Azure API Management是一种全托管服务,为用户提供发布.保护.转换.维护和监控API的能力.用户只需要在Azure门户上点击几下,就可以创建一个充当"前门"的AP ...
- (八)用于人脸识别的Web API
目录 介绍 客户端应用 服务器端应用程序 在容器中运行系统 下一步 在这里,我们将开发用于将检测到的人脸图像发送到识别服务器的Python代码,使用简单的Web API包装AI人脸识别以从边缘设备接收 ...
- ajax fetch api,fetch 简介: 新一代 Ajax API
AJAX半遮半掩的底层API是饱受诟病的一件事情. XMLHttpRequest 并不是专为Ajax而设计的. 虽然各种框架对 XHR 的封装已经足够好用, 但我们可以做得更好.更好用的API是 fe ...
最新文章
- 软件测试概述--基础篇
- Struts2配置时报struts-default.xml:65:72异常的解决方法
- 阿里云centos7通过yum安装 Mysql 8.0.11
- 你应该知道的模型评估的五个方法
- Nginx做web服务器linux内核参数优化
- Activity Monitor 闪退 无法进入睡眠
- windows 2003负载均衡故障切换
- linux crontab详解
- Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.
- 选数 2002年NOIP全国联赛普及组
- 在设计DJANGO用户更改密码时,出现NoReverseMatch at /account/password-change/这种妖精如何办?...
- postgresql是如何求年龄的_负债累累如何度过难关?她依靠此法三年还清300多万债务!...
- python金融风控评分卡模型和数据分析(加强版)
- python中合法命名的变量名_「变量名」python中变量的命名以及使用 - 金橙教程网...
- java 写文件换行_Java 写文件实现换行
- robbin界面 java_使用JAVA和C#开发Ribbon界面
- ppt大小如何压缩,ppt压缩方法
- java-net-php-python-java交通事故档案管理系统PPT计算机毕业设计程序
- java 中“==”与“equal” 的区别
- 第十六章:开发工具-compileall:字节编译源文件-编译单个文件
热门文章
- char与varchar的区别
- Ubuntu18.04安装cudnn
- 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
- java触发_怎么样让JAVA 设置一秒钟触发一个事件
- 华为atn980传输设备_注册开发者超200万!华为HMS加速全球布局,打造全场景智慧体验...
- 计算机科学与技术专业认证研讨,信息学院召开计算机科学与技术专业IEET认证暨人才培养方案修订研讨会...
- 【PCL】的五大依赖库及作用
- 数字图像处理:blob分析、阈值分割
- 读后感与机翻《理解工具:面向任务的对象建模、学习和识别》
- OpenCV 错误:无法打开摄像头(打开摄像头卡机)