1. 程式人生 > >react進行http請求,原生http請求封裝

react進行http請求,原生http請求封裝

react沒有像angular的$resource或者$http,或者是jquery的$ajax一樣的網路請求庫,該網路請求是作者自己封裝的,當然大家也可以根據自己需要改寫。

其中主要的內容有get,post,jsonp和file上傳幾種格式

請求示例,裡面可能用到了我其他的封裝service,請忽略:

HttpService.query({
    url: '/api/active/follow',
data: {
        extendKey: CommonService.getUrlParams('extendKey'),
dstUin: this.props.dstUin
},
success
: res => { console.log(res); if (res.retCode == 0) { this.setState({ liked: true }) } else { R_UiService.Toaster(res.retMsg) } } });


如果是post請求或者jsonp也差不多。以下是原始碼,如果有特殊需求,也可以在其中進行自己的改造。原始碼不可在es5環境下直接使用,需要通過babel編譯,推薦使用gulp或者webpack

/**
* Created by sheldon on 2016/8/2. */ 'use strict'; class HttpService { static query(config) { config = config || {}; var params = HttpService.formatParams(config.data); var request = new XMLHttpRequest(); request.onreadystatechange = function () { if (request.readyState == 4) { var
status = request.status; if (status >= 200 && status < 300) { var res = JSON.parse(request.responseText); config.success && config.success(res); } else { return config.fail && config.fail(status); } } }; request.open('GET', config.url + "?" + params, true); request.send(null); } static jsonp(config) { config = config || {}; var params = HttpService.formatParams(config.data); var Scrip=document.createElement('script'); Scrip.src = config.url + "?" + params + '&jsoncallback=' + 'HttpService.jsonpCallback'; this.callback = config.success; document.body.appendChild(Scrip); } static jsonpCallback(e) { this.callback(e); } static save(config) { config = config || {}; var params = HttpService.formatParams(config.data); var request = new XMLHttpRequest(); request.onreadystatechange = function () { if (request.readyState == 4) { var status = request.status; if (status >= 200 && status < 300) { var res = JSON.parse(request.responseText); console.log(res); config.success && config.success(res); } else { config.fail && config.fail(status); } } }; request.open("POST", config.url, true); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(params); } static uploadFile(cfg) { var config = cfg || {}; var xhr; var fileObj = config.file; // js 獲取檔案物件 var url = config.url; // 接收上傳檔案的後臺地址 var form = new FormData(); // FormData 物件 form.append(config.name, fileObj); // 檔案物件 xhr = new XMLHttpRequest(); // XMLHttpRequest 物件 xhr.open("post", url, true); //post方式,url為伺服器請求地址,true 該引數規定請求是否非同步處理。 xhr.onreadystatechange = function () { if (xhr.readyState == 4) { var status = xhr.status; if (status >= 200 && status < 300) { var res = JSON.parse(xhr.responseText); console.log(res); config.success && config.success(res); } else { config.fail && config.fail(status); } } }; xhr.send(form); //開始上傳,傳送form資料 } static formatParams(data) { var arr = []; for (var name in data) { arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name])); } arr.push(("v=" + Math.random()).replace(".", "")); return arr.join("&"); } }

有問題歡迎交流指正

相關推薦

react進行http請求原生http請求封裝

react沒有像angular的$resource或者$http,或者是jquery的$ajax一樣的網路請求庫,該網路請求是作者自己封裝的,當然大家也可以根據自己需要改寫。 其中主要的內容有get,post,jsonp和file上傳幾種格式 請求示例,裡面可能用到了我

fiddler filters 使用(fiddler只顯示指定請求fiddler不顯示指定請求即filter請求過濾)轉自:http://blog.csdn.net/notejs/article/

fiddler filters 使用(fiddler只顯示指定請求,fiddler不顯示指定請求,即filter請求過濾)Fiddler 有一個filters可以很好的幫助我們只顯示我們關係的請求或者隱藏掉我們不關心的請求。這在開發中是非常有用的,尤其是你在這邊想看請求,那邊

java http get post 各種請求模擬瀏覽器請求

package com.hlzt.wx.util.http; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org

JAVA傳送http get/post請求呼叫http介面、方法

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; impo

JAVA傳送http請求呼叫http介面與方法

1.傳送POST請求,無引數名呼叫。 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import

HTTP請求域名被請求後產生的操作

當一個使用者在瀏覽器輸入一個域名,比如www.taobao.com這個URL時,會發生如下操作: 首先,他會請求DNS把這個域名解析成為對應的IP地址; 然後根據這個IP地址去網際網路尋找對應的伺服器;向這個伺服器傳送get請求; 由這個 伺服器決定返回的資料資源給訪問的使

前端請求後臺http 連線輸出流交給ServeletResponse 下載檔案

後臺程式碼:@RequestMapping(value = "/download", method = RequestMethod.GET) public void download(HttpServ

axios服務封裝可用於任何支援axios的專案中包括react和vue都可通用。get/post請求以及併發請求。以及導航欄隨意切換測試/正式環境

任何專案,只要支援axios,那麼你只要把我現在封裝的服務整個資料夾考過去即可。這個原本是我封裝在vue裡的,但是有一天公司突然來一個緊急的H5微信分享活動的專案,我當時用react搭建(zepto+node搭建其實最好)也是為了挑戰一下自己,畢竟只有三天時間。所以當我把很多vue裡封裝的東西直

fiddler filters 使用(fiddler只顯示指定請求fiddler不顯示指定請求即filter請求過濾)(轉)

alt 正則 完全 字符 真的 upload 比較 left 模塊化 fiddler filters 使用(fiddler只顯示指定請求,fiddler不顯示指定請求,即filter請求過濾) Fiddler 有一個filters可以很好的幫助我們只顯示我們關系的請求或者隱

後臺發起post請求並返回請求結果

1.感謝 https://blog.csdn.net/Java_Long_Asus/article/details/82906135 2.程式碼 /** * 向指定的 URL傳送遠端POST方法的請求 * @param url傳送請求的 URL * @param js

4.body-parser中介軟體的使用專門處理前端的post請求同理get請求在本例不適用內含如何自定義中介軟體middleware

使用express框架可以結合中介軟體body-parser方便處理前端傳送過來的資料。(class10) 第一部分: 1.新建目錄後,開啟cmd---進入當前目錄---cnpm install express express-static body-parser   

fiddler 攔截指定的請求 並獲取請求頭和token資訊

開啟 fiddler -> rules ->customize rules 編輯customizerules.js 檔案 找到OnBeforeRequest方法 在這個方法體的第一行新增如下程式碼(說明:if判斷中的域名自行定義,可攔截指定的域名請求資訊) if (oSe

解決微信小程式 app onLaunch非同步請求在沒有請求執行完就載入首頁了的問題

 今天在除錯小程式的過程中,進了一個坑,程式載入需要先獲取使用者資訊,然後儲存到Storage中,然後首頁去Storage取資訊,根據使用者資訊去查本地伺服器資料列表,可是發現第一次進入的時候,資料總是載入不出來,只有再次進入才有資料。除錯之後發現app.js onLaunc

curl post請求 postman 模擬請求 線上測試工具模擬請求

1、curl傳送post 請求 function curl_post($url = '', $param = '') { if (empty($url) || empty($param)) { return false;

有序傳送多個ajax請求獲得對應請求的資料

var urlList=['1.php','2.php','3.php','4.php']; function ajax(index,arr){ if(index<arr.length){ var value=arr[index]; $.ajax

Retrofit網路請求工具類的封裝

對於Retrofit的使用我就不介紹了,使用也不難,隨便去搜兩篇文章看看。 我主要介紹的就是如何封裝,簡便使用。 一、Retrofit工具類的封裝(核心類) /** * Retrofit工具類 */ public class RetrofitUtils {

nodejs 使用axios模組發起http請求進行攔截各種請求資料

1、安裝axios npm install axios --save -g 2、先寫好攔截器、服務等 新建一個名為http_server.js的檔案 // http_server.js var axios = require("axios") // 建立axios例項s c

JAVA中建立HTTP通訊從伺服器上獲取HTML程式碼通過HTTP請求來下載圖片或其他二進位制檔案的程式下載結果要按下載到的檔案型別進行存檔中。

通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔 將程式碼從伺服器的中獲取下來的程式碼,在我之前已經講過了這裡寫連結內容 這裡我們就直接將原始碼稍加改動,加入一個檔案並請將builder 寫入即可。 import

HTTP狀態碼 HTTP狀態碼 200 302 (臨時移動) 伺服器目前從不同位置的網頁響應請求但請求者應繼續使用原有位置來進行以後的請求。 404 500

HTTP狀態碼 200 (成功) 伺服器已成功處理了請求。 通常,這表示伺服器提供了請求的網頁。 301 (永久移動) 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。 302 (臨時移動) 伺服器目前從不同位置的

iOS原生Http請求get post 非同步

網上有個公開的天氣介面:天氣 ,點進其中的getSupportCityDataset介面,用這個介面為例寫一下iOS上的HTTP請求的寫法。 這裡面提供了get、post請求的格式要求。 1、get: ? 1 2