>  기사  >  위챗 애플릿  >  WeChat 미니 프로그램에 대한 네트워크 요청 캡슐화 및 개선

WeChat 미니 프로그램에 대한 네트워크 요청 캡슐화 및 개선

PHPz
PHPz원래의
2017-04-02 14:57:291436검색

우선, 요청 시 서버가 매개변수를 수신하지 못하게 하는 버그를 미니 프로그램 문서에서 선언하세요

샘플 코드:

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

컨텐츠- 헤더 유형 , 서버가 매개변수를 수신할 수 있도록 하려면 content-type이 소문자여야 합니다. 오랫동안 고생했는데, 서버를 바꾸고 나서도 안 되더라구요. 매개변수가 요청 페이로드에 있는데 서버가 이를 수신할 수 없습니다.

function json2Form(json) {
 var str = [];
 for(var p in json){
 str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));
 }
 return str.join("&");
}

변환을 사용한 후에는 결국 콘텐츠 유형 문제로 간주됩니다. 결국 소문자로 바꿔도 괜찮았습니다. 이렇게 멋진 팀인 위챗이 아주 저급한 실수를 해서 개발자들을 좌절하게 만들었다는 생각이 듭니다. 말하지 말고 코드를 살펴 보겠습니다.

1. Http 요청 클래스

import util from 'util.js';
/**
 * url 请求地址
 * success 成功的回调
 * fail 失败的回调
 */
function _get( url, success, fail ) {
 
 console.log( "------start---_get----" );
 wx.request( {
 url: url,
 header: {
  // 'Content-Type': 'application/json'
 },
 success: function( res ) {
  success( res );
 },
 fail: function( res ) {
  fail( res );
 }
 });
 console.log( "----end-----_get----" );
}
/**
 * url 请求地址
 * success 成功的回调
 * fail 失败的回调
 */
function _post_from(url,data, success, fail ) {
 console.log( "----_post--start-------" );
 wx.request( {
 url: url,
 header: {
  'content-type': 'application/x-www-form-urlencoded',
 },
 method:'POST',
 data:{data: data},
 success: function( res ) {
  success( res );
 },
 fail: function( res ) {
  fail( res );
 }
 });
 console.log( "----end-----_get----" );
}
 
 /**
 * url 请求地址
 * success 成功的回调
 * fail 失败的回调
 */
function _post_json(url,data, success, fail ) {
 console.log( "----_post--start-------" );
 wx.request( {
 url: url,
 header: {
  'content-type': 'application/json',
 },
 method:'POST',
 data:data,
 success: function( res ) {
  success( res );
 },
 fail: function( res ) {
  fail( res );
 }
 });
 console.log( "----end----_post-----" );
}
module.exports = {
 _get: _get,
 _post:_post,
 _post_json:_post_json
}

테스트 케이스

2.1 요청 받기

//GET方式
let map = new Map();
map.set( 'receiveId', '0010000022464' );
let d = json_util.mapToJson( util.tokenAndKo( map ) );
console.log( d );
var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId?data='+d;
network_util._get( url1,d,
function( res ) {
console.log( res );
that.setData({
 taskEntrys:res.data.taskEntrys
});
}, function( res ) {
console.log( res );
});

2.2 POST 요청

//Post方式
 let map = new Map();
 map.set( 'receiveId', '0010000022464' );
 let d = json_util.mapToJson( util.tokenAndKo( map ) );
 console.log( d );
 var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId';
 network_util._post( url1,d,
 function( res ) {
 console.log( res );
 that.setData({
  taskEntrys:res.data.taskEntrys
 });
 }, function( res ) {
 console.log( res );
 });

효과

WeChat 미니 프로그램에 대한 네트워크 요청 캡슐화 및 개선

위 내용은 WeChat 미니 프로그램에 대한 네트워크 요청 캡슐화 및 개선의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.