可用于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-typeapplication/x-www-form-urlencoded,多次调用将会通过&来连接,这里的结果为name=tj&pet=tobi:

request.post(‘/user‘)
    .send(‘name=tj‘)
    .send(‘pet=tobi‘)
    .end(callback);

  superagent的请求数据格式化是可以扩展的,不过默认支持formjson两种格式,想发送数据以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();
  })
时间: 2024-08-03 22:00:05

可用于nodejs的SuperAgent(ajax API)的相关文章

用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库

小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢nodejs路由和Ajax之间的数据传输,也就是表单提交,然后在用nodejs把数据写入mysql数据库 用到的东西比较多,但是还是很有趣的 1.安装node.js 安装node.js,直接去官网下载然后根据需求点击下一步就好了 Node.js安装包及源码下载地址为:https://nodejs.org

笔记-Nodejs中的核心API之Events

最近正在学习Node,在图书馆借了基本关于Node的书,同时在网上查阅资料,颇有收获,但是整体感觉对Node的理解还是停留在一个很模棱两可的状态.比如Node中的模块,平时练习就接触到那么几个,其他的一些模块暂时只会在学习的时候接触到,不常用便就荒废了.正所谓好记心不如烂笔头,多做笔记还是更有利于理解和记忆.自己做的总结也方便回头复习,所以决定踏上漫长的修炼之旅-- Node提供了许多API,其中一些比较重要.这些核心的API是所有Node应用的支柱,你会不停的用到他们. Events 几乎所有

superagent模块api阅读

本文主要参考superagent的官方文档,基本上就是它的翻译. 题外话,superagent真是一个不错的nodejs模块,推荐使用. 前言 superagent 是一个流行的nodejs第三方模块,专注于处理服务端/客户端的http请求. 在nodejs中,我们可以使用内置的http等模块来进行请求的发送.响应处理等操作,不过superagent提供了更加简单.优雅的API,让你在处理请求时更加方便.而且它很轻量,学习曲线平滑,内部其实就是对内置模块的封装. 下面让我们先来看一个简单的例子,

使用js写一个作用于xml文件的ajax

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script type="text/javascript"> 5 window.onload = function(){ 6 var aNodes = document.getElementsByTagName("a"); 7 for(var i = 0; i < aNodes.length; i++){ 8 aNodes[i].onc

NodeJS SuperAgent中文使用文档

原文:https://cnodejs.org/topic/5378720ed6e2d16149fa16bd 题外话 superagent是nodejs里一个非常方便的客户端请求代理模块,当你想处理get,post,put,delete,head请求时,你就应该想起该用它了:) SuperAgent superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下. 一个简单的post请求,并设置请求头信息的例子 r

NodeJS API简介

简单介绍下NodeJS现有API. Assert(断言):该模块用于编写程序的单元测试用例. Buffer(缓冲块) :处理二进制数据. C/C++ Addons(拓展):Addons插件就是动态连接库. Child Processes(子进程):提供了类似 popen(3) 的处理三向数据流(stdin/stdout/stderr)的功能. Cluster(集群):用于nodejs多核处理,简化多进程并行化程序的开发,轻松构建一个用于负载均衡的集群. Console(控制台):类似于大部分 W

jQuery-1.9.1源码分析系列(十六)ajax——响应数据处理和api整理

ajax在得到请求响应后主要会做两个处理:获取响应数据和使用类型转化器转化数据 a.获取响应数据 获取响应数据是调用ajaxHandleResponses函数来处理. ajaxHandleResponses的功能有: - 为jqXHR设置所有responseXXX字段(值便是响应数据) - 找到正确的dataType (在content-type和预期的dataType两者中的一个) - 返回正确的响应数据 我们看一个响应数据的格式: responses = { text: "{"co

Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析

以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一下. 首先浏览器是没有主动读取本地文件的权限的,所以对JavaScript处理二进制数据能力的学习,应该从运行在服务器端的nodejs看起. Nodejs 中的 Buffer 为了方便处理二进制数据,nodejs特地封装了一个Buffer模块.文档地址:http://nodejs.cn/doc/no

好用的 HTTP模块SuperAgent

SuperAgent 最近在写爬虫,看了下node里面有啥关于ajax的模块,发现superagent这个模块灰常的好用.好东西要和大家分享,话不多说,开始吧- 什么是SuperAgent superagent它是一个强大并且可读性很好的轻量级ajaxAPI,是一个关于HTTP方面的一个库,而且它可以将链式写法玩的出神入化. var superagent = require('superagent'); superagent .post('/api') .send({ 'key': 'value