GetHTTPSttaus代码获取API-- React Native

时间:2018-01-03 09:41:16

标签: javascript reactjs react-native ecmascript-6 fetch

点击Login API将返回成功或失败响应。响应代码将是。 200到300之间的成功。休息将被归类为失败响应。在我的场景中,如果它的成功响应将是文本(response.text())。对于失败案例,它将产生Json(response.json())。

我希望根据失败和成功序列化响应。

方法我现在已经跟进了

fetch(restUrl, {
method: "POST",
headers: {

    'Accept': '*/*',
    'Content-Type': 'application/json',
},
body: JSON.stringify(objReq)
}))

.then(response => {

            if (response.status >= 200 && response.status < 300) {
                response.text()
            } else {
                response.json()

            }

        )
        .then(responseJson => {

            let obj = responseJson;
            if (responseJson != null && responseJson != undefined) {} else {

                alert(i18n.t('unable'));
            }
        })
        .catch(error => {


            alert(error + "-from error");

        });

它不接受这种方法。请提供合适的解决方案。

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找像这样的东西

const fetchRequest = (restUrl, objReq) => fetch(restUrl, {
    method: "POST",
    headers: {
      'Accept': '*/*',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(objReq)
  })
  .then(response => {
    if (response.status >= 200 && response.status < 300) {
      return response.text()
    } else {
      throw response.json();
    }
  })
  .then(responseText => {
    console.log('success',responseText);
  })
  .catch(errorJson => {
    console.log(errorJson);
  });

你可以这样称呼它。

fetchRequest('url.com',{test:123});

实质上,当你获得200以外的状态代码时,只需抛出响应,你也忘了回复承诺