无法使用我的React Native App进行注册-我的API出了点问题(也许吗?)

时间:2019-10-03 18:32:45

标签: javascript reactjs api react-native

我正在尝试构建一个本机应用程序,但似乎无法登录。尝试时得到一个

  

“注册错误-错误”消息。

我认为我的API无法正常工作,当我在邮递员上尝试时,我得到了

  

404消息。

URL应该很好,所以我不确定它是否与API后端中的设置有关,或者我是否以某种方式修改了参数。

这是我的api.js代码:

//const BASE_URL = "http://{ip address}:5000";
const BASE_URL = 'https://neighbor-hood.herokuapp.com';

export const api = async (url, method, body = null, headers = {}) => {

try {
  const endPoint = BASE_URL.concat(url);
  const reqBody = body ? JSON.stringify(body) : null;


  const fetchParams = {method, headers};

  if((method === "POST" || method === "PUT") && !reqBody) {
      throw new Error("Request body required");
  }
  if(reqBody) {
      fetchParams.headers["Content-type"] = "application/json";
      fetchParams.body = reqBody;
  }
  const fetchResponse = await fetch(endPoint, fetchParams);

  let text = ''
  try{
    console.log("fetchResponse ", fetchResponse)
    text = await fetchResponse.text()
  } catch (err){
    console.log("Exception in turning text from response err", err)
  }

  return fetchResponse;
} catch (e) {
  console.log("Exception ", e)
  return e;
}
}

这是导入api的我的actions.js文件:

import {api} from "../service/api";

export const createNewUser = (payload) => {
return async (dispatch) => {

    try {
      dispatch({
        type: "CREATE_USER_LOADING"
      });

      const response = await api("/user/create", "POST", payload); 

      if(response.success) {
        dispatch({
            type: "CREAT_USER_SUCCESS"
        });
        dispatch({
            type: "AUTH_USER_SUCCESS",
            token: response.token
        });
        dispatch({
            type: "GET_USER_SUCCESS",
            payload: response.responseBody
        });

        return response;
      } else {
        throw response;
      }

    } catch (error) {
        dispatch({
            type: "CREAT_USER_FAIL",
            payload: error.responseBody
        });
        return error;
    }
  }
}

export const loginUser = (payload) => {
  return async (dispatch) => {

    try {
      dispatch({
        type: "LOGIN_USER_LOADING"
      });

      const response = await api("/user/login", "POST", payload);

      if(response.success) {
        dispatch({
            type: "LOGIN_USER_SUCCESS",
        });
        dispatch({
            type: "AUTH_USER_SUCCESS",
            token: response.token
        });
        dispatch({
            type: "GET_USER_SUCCESS",
            payload: response.responseBody
        });
        return response;
      } else {
        throw response;
      }

    } catch (error) {
        dispatch({
            type: "LOGIN_USER_FAIL",
            payload: error.responseBody
        });
        return error;
    }
  }
}

export const logoutUser = () => {
  return async (dispatch, getState) => {
    const state = getState();
    try {
        const {authReducer: {authData: {token}}} = state;
        console.log(token);

        const response = await api("/user/logout", "DELETE", payload);
        console.log(response);
        dispatch({
            type: "USER_LOGGED_OUT_SUCCESS"
        });
    } catch (e) {
        console.log(e);
    }
  }
}

这就是我在控制台中看到的内容:

fetchResponse  Response {
"_bodyBlob": Blob {
"_data": Object {
  "blobId": "DC45F3C7-FB3E-4120-8B92-0AC798181824",
  "name": "create.html",
  "offset": 0,
  "size": 232,
  "type": "text/html",
  },
  },
  "_bodyInit": Blob {
  "_data": Object {
  "blobId": "DC45F3C7-FB3E-4120-8B92-0AC798181824",
  "name": "create.html",
  "offset": 0,
  "size": 232,
  "type": "text/html",
  },
  },
  "headers": Headers {
  "map": Object {
  "connection": "keep-alive",
  "content-length": "232",
  "content-type": "text/html",
  "date": "Thu, 03 Oct 2019 18:15:10 GMT",
  "server": "gunicorn/19.9.0",
  "via": "1.1 vegur",
  },
  },
 "ok": false,
 "status": 404,
 "statusText": undefined,
 "type": "default",
 "url": "https://neighbor-hood.herokuapp.com/user/create",
 }
Object {
"isError": true,
"isLoading": false,
"isSuccess": false,
}

1 个答案:

答案 0 :(得分:0)

  

我认为我的API无法正常工作,当我在邮递员上尝试时,会收到404消息。

这说明您有一些后端错误,因为即使在尝试邮递员时,也会得到error of 404,这是来自后端的错误。