Home  >  Article  >  Web Front-end  >  How to use axios in node.js

How to use axios in node.js

亚连
亚连Original
2018-06-23 16:21:116800browse

This article mainly introduces a summary of the experience of using axios in node.js, and analyzes the errors encountered in the process. Please refer to it.

Axios is a Promise-based HTTP library that can be used in browsers and node.js. Because of Youda’s recommendation, axios has become more and more popular. I have encountered some problems using axios in recent projects, so I will take this opportunity to summarize them. If there are any mistakes, please feel free to correct them.

Function

The browser initiates an XMLHttpRequests request

The node layer initiates an http request

Supports Promise API

Intercept requests and responses

Convert request and response data

Cancel request

Automatically convert JSON data

The client supports defense against XSRF (cross-site request forgery) )

Compatible

Use

npm
npm install axios
bower
bower install axios

cdn

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

Initiate a request

GET

axios.get(&#39;/user?ID=123&#39;)
  .then( res => {
    console.info(res)
  }).catch( e => {
    if(e.response){
    //请求已发出,服务器返回状态码不是2xx。
      console.info(e.response.data)
      console.info(e.response.status)
      console.info(e.response.headers)
    }else if(e.request){
      // 请求已发出,但没有收到响应
      // e.request 在浏览器里是一个XMLHttpRequest实例,
      // 在node中是一个http.ClientRequest实例
      console.info(e.request)
    }else{
      //发送请求时异常,捕捉到错误
      console.info(&#39;error&#39;,e.message)
    }
    console.info(e.config)
  })
// 等同以下写法
axios({
  url: &#39;/user&#39;,
   method: &#39;GET&#39;,
  params: {
    ID: 123
  }
}).then( res => {
  console.info(res)
}).catch( e=> {
  console.info(e)
})

POST

axios.post(&#39;/user&#39;, {
  firstName: &#39;Mike&#39;,
  lastName: &#39;Allen&#39;
}).then( res => {
  console.info(res)
}).catch( e => {
  console.info(e)
})
// 等同以下写法
axios({
  url: &#39;/user&#39;,
  method: &#39;POST&#39;,
  data: {
    firstName: &#39;Mike&#39;,
    lastName: &#39;Allen&#39;
  }
}).then( res => {
  console.info(res)
}).catch( e => {
  console.info(e)
})

Notes

Params are used when passing parameters using the GET method, and the official documentation introduces: params are the URL parameters to be sent with the request. Must be a plain object or a URLSearchParams object. Translated as: params is sent as a parameter in the URL link in the request, and it must be a plain object or a URLSearchParams object. Plain object refers to an ordinary object defined in JSON form or a simple object created by new Object(); while the URLSearchParams object refers to an object that can be used to process the query string of the URL using some practical methods defined by the URLSearchParams interface. , that is to say, the params parameters are passed in the form of /user?ID=1&name=mike&sex=male.

When using POST, the corresponding parameter transfer uses data, and data is sent as the request body. This form is also used for PUT, PATCH and other request methods. One thing to note is that the default request body type of POST in axios is Content-Type: application/json (JSON specification is popular), which is also the most common request body type, which means that the serialized json format is used String to pass parameters, such as: { "name" : "mike", "sex" : "male" }; at the same time, the background must receive parameters in the form of supporting @RequestBody, otherwise the front-end parameters will be passed correctly and the background will receive situation.

If you want to set the type to Content-Type:application/x-www-form-urlencoded (browser native support), axios provides two methods, as follows:

Browser side

const params = new URLSearchParams();
params.append(&#39;param1&#39;, &#39;value1&#39;);
params.append(&#39;param2&#39;, &#39;value2&#39;);
axios.post(&#39;/user&#39;, params);

However, not all browsers support URLSearchParams. Check caniuse.com for compatibility, but there is a Polyfill (polyfill: used to implement native APIs that the browser does not support) The code can be vaguely understood as a patch, and at the same time, ensure that the polyfill is in the global environment).

Alternatively, you can also use the qs library to format the data. By default, the qs library can be used after installing axios.

const qs = require(&#39;qs&#39;);
axios.post(&#39;/user&#39;, qs.stringify({&#39;name&#39;:&#39;mike&#39;}));

node layer

querystring can be used in the node environment. Similarly, you can also use qs to format data.

const querystring = require(&#39;querystring&#39;);
axios.post(&#39;http://something.com/&#39;, querystring.stringify({&#39;name&#39;:&#39;mike&#39;}));

Supplement

There is another common request body type, namely multipart/form-data (native browser support), which is commonly used to submit form data a format. Contrast this with x-www-form-urlencoded, where data is encoded into key-value pairs separated by '&', while keys and values ​​are separated by '='. Characters that are not alphabetic or numeric are percent-encoded (URL encoding), which is why this type does not support binary data (multipart/form-data should be used instead).

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to implement the China map in vue vuex axios echarts

Solve the problem of the input box being blocked by the input method

How to solve the problem that the soft keyboard blocks the input box in js

How to implement component interaction in Angular2

The above is the detailed content of How to use axios in node.js. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn