亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解React native fetch遇到的坑

 更新時間:2018年08月30日 09:41:18   作者:meyin  
這篇文章主要介紹了詳解React native fetch遇到的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近在自學(xué)react native,學(xué)習(xí)過程中遇到了不少的坑,下面將針對登錄這一功能來詳細(xì)介紹一下以下遇到的兩個問題。

1.在請求數(shù)據(jù)的時候,一般情況下我們會直接提交Content-type是json數(shù)據(jù)格式的請求。類似

fetch('https://mywebsite.com/endpoint/', {
 method: 'POST',
 headers: {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
 },
 body: JSON.stringify({
  firstParam: 'yourValue',
  secondParam: 'yourOtherValue',
 })
})

當(dāng)我開始請求登錄接口的時候,發(fā)現(xiàn)上面的請求方法失效了,想了好多辦法都不知道問題出在哪里,最后試了下抓包,才發(fā)現(xiàn)原來請求登錄接口的時候,content-type是application/x-www-form-urlencode,于是我搜了下這方面的知識。我們在提交表單的時候,form表單參數(shù)中會有一個enctype的參數(shù)。enctype指定了HTTP請求的Content-Type。默認(rèn)情況下,HTML的form表單的enctype=application/x-www-form-urlencoded。application/x-www-form-urlencoded是指表單的提交,并且將提交的數(shù)據(jù)進(jìn)行urlencode。默認(rèn)情況下,我們所有的表單提交都是通過這種默認(rèn)的方式實現(xiàn)的。文檔中是有記載的:

fetch('https://mywebsite.com/endpoint/', {
 method: 'POST',
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded',
 },
 body: 'key1=value1&key2=value2'
}

2.登錄成功后如何獲取當(dāng)headers里面的sessionid的問題。

 

登錄成功之后,我們可以打印出上面的response,若是需要取出上面的sessionid,我們可以采用下面的方法,寫法可能比較low,但是可以達(dá)到目的

//獲取sid
var headers = response.headers.get("set-cookie");
var header = headers.split(";");
var sessionid;
for(var index = 0; index < header.length; index++)
{
  if(header[index].indexOf("JSESSIONID") > -1){
    sessionid = header[index].split("=")[1];
  }
}
//保存
AsyncStorage.setItem('sessionid', sessionid);

3.登錄成功之后,后臺需要根據(jù)sessionid來判斷登錄狀態(tài)。當(dāng)請求的接口是必須登錄之后才能獲得數(shù)據(jù)的時候,就不能用傳統(tǒng)的寫法來請求了。javascript 使用fetch進(jìn)行跨域請求時默認(rèn)是不帶cookie的,所以會造成 session失效。那所以在登錄請求的時候需要加上credentials: ‘include'這個字段。

fetch(Api.checkLoginSecurity , {
  credentials: 'include',
  method: 'POST',
  headers:{
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: 'username='+ this.props.userName + '&password=' + this.userPassword
})

在需要登錄后才能獲取數(shù)據(jù)的接口也需要加上

fetch(url , {
  credentials: 'include',
  method: 'GET',
})

此處還要強(qiáng)調(diào)一下get請求和post請求,經(jīng)別人提醒,發(fā)現(xiàn)雖然他寫了個body= {*},讓我誤以為是用POST方式,其實body只是參數(shù)的字段,實際上用的還是GET請求,所以把POST改為GET(默認(rèn)是GET,所以就不需要寫method),因為GET無法在body里傳參,也不需要header,直接把參數(shù)寫在URL里,只有POST才是在body里傳參。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解如何用webpack4從零開始構(gòu)建react開發(fā)環(huán)境

    詳解如何用webpack4從零開始構(gòu)建react開發(fā)環(huán)境

    這篇文章主要介紹了詳解如何用webpack4從零開始構(gòu)建react開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • React Native按鈕Touchable系列組件使用教程示例

    React Native按鈕Touchable系列組件使用教程示例

    這篇文章主要為大家介紹了React Native按鈕Touchable系列組件使用教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • React Diff原理深入分析

    React Diff原理深入分析

    這篇文章主要介紹了React Diff原理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04
  • React router cache route實現(xiàn)緩存頁面流程介紹

    React router cache route實現(xiàn)緩存頁面流程介紹

    react-router自身沒有路由緩存的特性,在5.x版本之前,我們可以基于react-router-cache-route來實現(xiàn)路由緩存功能。但是react-router 6.x在實現(xiàn)上做了比較大的變化,react-router-cache-route沒有提供相應(yīng)的支持
    2023-01-01
  • forwardRef?中React父組件控制子組件的實現(xiàn)代碼

    forwardRef?中React父組件控制子組件的實現(xiàn)代碼

    forwardRef 用于拿到父組件傳入的 ref 屬性,這樣在父組件便能通過 ref 控制子組件,這篇文章主要介紹了forwardRef?-?React父組件控制子組件的實現(xiàn)代碼,需要的朋友可以參考下
    2024-01-01
  • React class和function的區(qū)別小結(jié)

    React class和function的區(qū)別小結(jié)

    Class組件和Function組件是React中創(chuàng)建組件的兩種主要方式,本文主要介紹了React class和function的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 可定制react18 input otp 一次性密碼輸入組件

    可定制react18 input otp 一次性密碼輸入組件

    這篇文章主要為大家介紹了可定制react18 input otp 一次性密碼輸入組件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • react父組件更改props子組件無法刷新原因及解決方法

    react父組件更改props子組件無法刷新原因及解決方法

    使用過vue的朋友都知道,vue父組件更改props的值,子組件是會刷新的,而react就未必,今天通過一個例子給大家介紹react父組件更改props子組件無法刷新原因,需要的朋友可以參考下
    2022-09-09
  • react腳手架配置代理的實現(xiàn)

    react腳手架配置代理的實現(xiàn)

    本文主要介紹了react腳手架配置代理的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • React Native使用百度Echarts顯示圖表的示例代碼

    React Native使用百度Echarts顯示圖表的示例代碼

    本篇文章主要介紹了React Native使用百度Echarts顯示圖表的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論