本文主要是介绍《React-Native系列》32、 基于Fetch封装HTTPUtil工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于http请求的工具类,有很多,譬如:httpclient,okhttp。
那么关于RN的处理HTTP请求的工具类呢,目前还没有找到,所以自己简单封装了一个,避免代码里到处都是fetch方法。
好了,完整代码如下:
- var HTTPUtil = {};
-
-
-
-
-
-
-
-
- HTTPUtil.get = function(url, params, headers) {
- if (params) {
- let paramsArray = [];
-
- Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key]))
- if (url.search(/\?/) === -1) {
- url += '?' + paramsArray.join('&')
- } else {
- url += '&' + paramsArray.join('&')
- }
- }
- return new Promise(function (resolve, reject) {
- fetch(url, {
- method: 'GET',
- headers: headers,
- })
- .then((response) => {
- if (response.ok) {
- return response.json();
- } else {
- reject({status:response.status})
- }
- })
- .then((response) => {
- resolve(response);
- })
- .catch((err)=> {
- reject({status:-1});
- })
- })
- }
-
-
-
-
-
-
-
-
-
- HTTPUtil.post = function(url, formData, headers) {
- return new Promise(function (resolve, reject) {
- fetch(url, {
- method: 'POST',
- headers: headers,
- body:formData,
- })
- .then((response) => {
- if (response.ok) {
- return response.json();
- } else {
- reject({status:response.status})
- }
- })
- .then((response) => {
- resolve(response);
- })
- .catch((err)=> {
- reject({status:-1});
- })
- })
- }
-
- export default HTTPUtil;
怎么使用呢,举个简单的例子吧:
- let formData = new FormData();
- formData.append("id",1060);
-
- HTTPUtil.post(url,formData,headers).then((json) => {
-
- if(json.code === 0 ){
-
- }else{
-
- this.doException(json);
- }
- },(json)=>{
-
-
- })
这篇关于《React-Native系列》32、 基于Fetch封装HTTPUtil工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!