首页 > 解决方案 > React Native 请求失败,状态码为 400

问题描述

有没有人有使用此 API 的经验: https ://authenticjobs.com/api/docs#introduction

我已经在我的 React Native 项目中运行了几次实现迭代,我最初遇到了这个错误:

undefined 不是一个对象(评估'_ref.longitude')

现在我收到了这个错误:

请求失败,状态码 400

这是尝试记录data此 API 请求对象的操作创建者。

import axios from "axios";
import reverseGeoCode from "latlng-to-zip";
import qs from "qs";

import { FETCH_JOBS } from "./types";

const JOB_ROOT_URL = "https://authenticjobs.com/api/?";
const JOB_QUERY_PARAMS = {
  api_key: "5634cc46389d0d872723b8c46fba672c",
  format: "json"
  // latlong: 1,
  // radius: 10,
  // q: "javascript"
};

const buildJobsUrl = zip => {
  const query = qs.stringify({ ...JOB_QUERY_PARAMS, l: zip });
  return `${JOB_ROOT_URL}${query}`;
};

export const fetchJobs = region => async dispatch => {
  try {
    let zip = await reverseGeoCode(region);
    const url = buildJobsUrl(zip);
    let { data } = await axios.get(url);
    dispatch({ type: FETCH_JOBS, payload: data });
    console.log(data);
  } catch (e) {
    console.log(e);
  }
};

标签: react-nativeaxios

解决方案


我让它与这个重构一起工作,尽管这会使我的应用程序朝着不同的方向发展:

import axios from "axios";

import { FETCH_JOBS } from "./types";

const JOB_ROOT_URL = "https://authenticjobs.com/api/?api_key=";
const JOB_QUERY_PARAMS = {
  key: "a446a0eefe6f5699283g34f4d5b51fa0",
  method: "aj.jobs.getLocations",
  format: "json",
  category: "javascript"
};

export const fetchJobs = region => async dispatch => {
  try {
    const url =
      JOB_ROOT_URL +
      JOB_QUERY_PARAMS.key +
      "&method=" +
      JOB_QUERY_PARAMS.method +
      "&category=" +
      JOB_QUERY_PARAMS.category +
      "&format=" +
      JOB_QUERY_PARAMS.format;
    let { data } = await axios.get(url);
    dispatch({ type: FETCH_JOBS, payload: data });
    console.log(data);
  } catch (e) {
    console.log(e);
  }
};

推荐阅读