Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie Axios in node.js

So verwenden Sie Axios in node.js

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

Dieser Artikel stellt hauptsächlich eine Zusammenfassung der Erfahrungen mit der Verwendung von Axios in node.js vor und analysiert die dabei aufgetretenen Fehler.

Axios ist eine Promise-basierte HTTP-Bibliothek, die in Browsern und node.js verwendet werden kann. Aufgrund der Empfehlung von Youda erfreut sich Axios immer größerer Beliebtheit. Ich bin in den letzten Projekten auf einige Probleme bei der Verwendung von Axios gestoßen, daher werde ich diese Gelegenheit nutzen, sie zusammenzufassen. Wenn es Fehler gibt, können Sie diese gerne korrigieren.

Funktion

Der Browser initiiert eine XMLHttpRequests-Anfrage

Die Knotenschicht initiiert eine http-Anfrage

Unterstützt Promise API

Anfragen und Antworten abfangen

Anfrage- und Antwortdaten konvertieren

Anfragen abbrechen

JSON-Daten automatisch konvertieren

Client unterstützt die Verteidigung gegen XSRF (cross- Site Request Forgery) )

Kompatibel

Verwenden Sie

npm
npm install axios
bower
bower install axios

cdn

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

, um eine Anfrage starten

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)
})

Hinweise

Parameter werden verwendet, wenn Parameter mit der GET-Methode übergeben werden, und in der offiziellen Dokumentation wird Folgendes eingeführt: Parameter sind die URL-Parameter, die mit der Anfrage gesendet werden müssen. Muss ein einfaches Objekt oder ein URLSearchParams-Objekt sein . Übersetzt als: params wird als Parameter im URL-Link in der Anfrage gesendet und muss ein einfaches Objekt oder URLSearchParams-Objekt sein. Ein einfaches Objekt bezieht sich auf ein gewöhnliches Objekt, das in JSON-Form definiert ist, oder auf ein einfaches Objekt, das von new Object() erstellt wurde, während sich das URLSearchParams-Objekt auf ein Objekt bezieht, das verwendet werden kann, um die Abfragezeichenfolge der URL mithilfe einiger praktischer, durch URLSearchParams definierter Methoden zu verarbeiten Schnittstelle, das heißt, die Parameter werden in der Form /user?ID=1&name=mike&sex=male übergeben.

Bei Verwendung von POST verwendet die entsprechende Parameterübertragung Daten und Daten werden als Anforderungstext gesendet. Dieses Formular wird auch von PUT, PATCH und anderen Anforderungsmethoden verwendet. Zu beachten ist, dass der Standard-Anforderungskörpertyp von POST in Axios Content-Type: application/json ist (JSON-Spezifikation ist beliebt), was auch der häufigste Anforderungskörpertyp ist, was bedeutet, dass das serialisierte JSON-Format verwendet wird. Zeichenfolge zum Übergeben von Parametern wie: { „name“ : „mike“, „sex“ : „male“ } Gleichzeitig muss der Hintergrund Parameter in Form von @RequestBody empfangen, andernfalls die Front-End-Parameter wird korrekt übergeben und der Hintergrund erhält die Situation.

Wenn Sie den Typ auf Content-Type:application/x-www-form-urlencoded (native Browserunterstützung) festlegen möchten, bietet axios zwei Methoden wie folgt an:

Browserseite

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);

Allerdings unterstützen nicht alle Browser URLSearchParams. Überprüfen Sie caniuse.com auf Kompatibilität. Hier ist jedoch ein Polyfill (Polyfill: Wird zum Implementieren nativer APIs verwendet, die der Browser nicht unterstützt. Der Code kann sein vage als Patch verstanden und gleichzeitig sichergestellt, dass sich die Polyfüllung in der globalen Umgebung befindet.

Alternativ können Sie auch die qs-Bibliothek zum Formatieren der Daten verwenden. Standardmäßig kann die qs-Bibliothek nach der Installation von axios verwendet werden.

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

Knotenebene

Sie können Abfragezeichenfolgen in der Knotenumgebung verwenden. Ebenso können Sie qs auch zum Formatieren von Daten verwenden.

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

Ergänzung

Es gibt einen weiteren häufigen Anforderungstexttyp, nämlich multipart/form-data (native Browserunterstützung), der üblicherweise zum Übermitteln von Formulardaten in einem Format verwendet wird . Vergleichen Sie dies mit x-www-form-urlencoded, wo die Daten in durch „&“ getrennte Schlüssel-Wert-Paare codiert werden, während Schlüssel und Werte durch „=“ getrennt werden. Zeichen, die nicht alphabetisch oder numerisch sind, werden prozentual kodiert (URL-Kodierung), weshalb dieser Typ keine Binärdaten unterstützt (stattdessen sollten multipart/form-data verwendet werden).

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

So implementieren Sie die China-Karte in vue+vuex+axios+echarts

Lösen Sie das Eingabefeld, das blockiert wird die Eingabemethode Das Problem

So lösen Sie das Problem, dass die Softtastatur das Eingabefeld in js blockiert

So implementieren Sie die Komponenteninteraktion in Angular2

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Axios in node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn