Maison >Applet WeChat >Développement de mini-programmes >Explication détaillée et exemples de l'applet WeChat wx.request (méthode d'appel d'interface)

Explication détaillée et exemples de l'applet WeChat wx.request (méthode d'appel d'interface)

高洛峰
高洛峰original
2017-01-09 10:50:025542parcourir

Applet WeChat wx.request ---- Méthode d'appel d'interface

Récemment, j'ai développé une version applet WeChat du système de gestion des tâches. J'ai rencontré quelques problèmes lors de l'envoi d'interfaces au backend Java.

Interface officielle

L'interface officielle s'appelle wx.request et la méthode de requête est relativement simple. Voici un exemple de requête donné sur le site officiel.

wx.request({
 url: 'test.php', //仅为示例,并非真实的接口地址
 data: {
   x: '' ,
   y: ''
 },
 header: {
   'content-type': 'application/json'
 },
 success: function(res) {
  console.log(res.data)
 }
})

Problèmes

Le type de contenu dans l'en-tête de la requête wx.request est par défaut application/json. Si nous voulons modifier la méthode, par exemple en utilisant "application/x-www-form-urlencoded", nous constaterons que l'application/json par défaut. n'est pas remplacé dans les informations d'en-tête de la requête.Au lieu de cela, cette méthode a été ajoutée.De plus, lors d'une requête avec jquery.ajax, même si la méthode application/json est utilisée pour la requête, le format de données obtenu est différent. est utilisée, ajax convertira les données de la demande sous la forme &name1=value1&name2 =value2, cela posera des problèmes lors de l'analyse des données de la demande en fonction du type de contenu. Je ne sais pas si WeChat fait cela intentionnellement ou s'il s'agit simplement d'un bug. Bref, cela m'a causé des ennuis inutiles.

L'applet WeChat envoie des requêtes https. Vous pouvez utiliser http lors du débogage local. Si vous vérifiez la méthode de requête et le nom de domaine lors du test sur un téléphone mobile, si cela est illégal, l'erreur suivante sera signalée :

微信小程序 wx.request(接口调用方式)详解及实例

Afin de faciliter la requête, nous pouvons faire une simple encapsulation de wx.request, ce qui sera beaucoup plus pratique lorsque nous l'appellerons à nouveau. Le code est le suivant :

var app = getApp();
function request(url,postData,doSuccess,doFail,doComplete){
   var host = getApp().conf.host;
   wx.request({
    url: host+url,
    data:postData,
    method: 'POST', 
    success: function(res){
     if(typeof doSuccess == "function"){
       doSuccess(res);
     }
    },
    fail: function() {
     if(typeof doFail == "function"){
       doFail();
     }
    },
    complete: function() {
     if(typeof doComplete == "function"){
       doComplete();
     }
    }
   });
 }
}
 
module.exports.request = request;

Si une interface est fréquemment utilisée à différents endroits, j'ai initialement pensé à écrire une fonction, puis à l'exposer pour d'autres appels js. Cependant, j'ai découvert plus tard que la définition de async dans wx.request n'est pas valide et ne peut envoyer que des requêtes asynchrones. Je veux écrire une fonction. Il est plus difficile de renvoyer les données obtenues en appelant l'interface.

Merci d'avoir lu, j'espère que cela aidera tout le monde, et merci pour votre soutien à ce site !

Pour des explications plus détaillées et des exemples d'articles liés à l'applet WeChat wx.request (méthode d'appel d'interface), veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn