WeChat 애플릿 wx.request----인터페이스 호출 방법
최근에 작업 관리 시스템의 WeChat 애플릿 버전을 개발했는데, Java 백엔드로 인터페이스를 보낼 때 몇 가지 문제가 발생했습니다.
공식 인터페이스
공식 인터페이스는 wx.request라고 하며, 요청 방법은 비교적 간단합니다. 다음은 공식 홈페이지에 나와 있는 요청 예시입니다.
wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) } })
문제
wx.request 요청 헤더의 콘텐츠 유형은 기본적으로 application/json입니다. "application/x-www-form-urlencoded"를 사용하는 등 메서드를 변경하려는 경우 기본 application/json을 찾을 수 있습니다. 대신에 이 메소드가 추가되었습니다. 또한, jquery.ajax로 요청할 경우, application/json 메소드를 사용하여 요청하더라도 얻는 데이터 형식이 다릅니다. 메서드를 사용하면 ajax가 요청 데이터를 &name1=value1&name2 =value2 형식으로 변환합니다. 이로 인해 콘텐츠 유형을 기반으로 요청 데이터를 구문 분석할 때 WeChat이 의도적으로 이를 수행하는지 아니면 단순한 버그인지는 알 수 없습니다. . 요컨대, 그것은 나에게 불필요한 문제를 가져왔습니다.
WeChat 애플릿은 로컬에서 디버깅할 때 http를 사용할 수 있습니다. 휴대폰에서 테스트할 때 요청 방법과 도메인 이름이 불법인 경우 다음 오류가 보고됩니다.
요청을 용이하게 하기 위해 wx.request를 간단히 캡슐화할 수 있습니다. 이는 다시 호출할 때 훨씬 더 편리할 것입니다. 코드는 다음과 같습니다.
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;
인터페이스가 다른 곳에서 자주 사용되는 경우 원래는 함수를 작성한 다음 다른 js 호출에 대해 함수를 노출하려고 생각했지만 나중에 wx.request에서 async 설정이 유효하지 않으며 비동기 요청만 보낼 수 있다는 것을 알았습니다. 함수를 작성하고 싶습니다. 인터페이스를 호출하여 얻은 데이터를 반환하는 것이 더 어렵습니다.
읽어 주셔서 감사합니다. 이 내용이 모든 사람에게 도움이 되기를 바라며 이 사이트를 지원해 주셔서 감사합니다!
WeChat 애플릿 wx.request(인터페이스 호출 방법) 관련 기사에 대한 자세한 설명과 예를 보려면 PHP 중국어 웹사이트를 주목하세요!