Как сделать запрос на выборку с localhost на api? - PullRequest
0 голосов
/ 11 июля 2019

Я делаю приложение сканера штрих-кода.Когда я делаю запрос на выборку, localhost присоединяется к передней части URL-адреса API и возвращает 404. Как я могу исправить это, когда, когда я делаю запрос на получение, он включает только URL-адрес API, к которому я пытаюсь получить?

export const getUpc = (text) => {
  return dispatch => {
  let url = "api.upcitemdb.com/prod/trial/lookup"

  let req = new Request(url , {
    hostname: 'api.upcitemdb.com',

    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Access-Control-Allow-Origin': 'http://127.0.0.1:3000'
    },
    mode: 'no-cors'
  })

  let product = null
  fetch(req)
  .catch(err => console.log('error', err))
  .then(res => {
    console.log(res.status)
    if(res.status !== 200){
      return {
        resStatus: res.status
      }
    } else if(res.status === 200) {
      console.log(res)
      return res.json()

    }
  })
  .then(parsedRes => {
    if(parsedRes.resStatus !== 200){
      parsedRes.resStatus === 0 ? dispatch(invalidBarcode('noAPI')) : dispatch(invalidBarcode('invalid'))
    } else {
      product = parsedRes
      console.log(product)
      dispatch(productDetected(product))
    }
  })
  }
}

Я получаю эту ошибку в консоли: GET http://127.0.0.1:3000/api.upcitemdb.com/prod/trial/lookup 404 (Не найдено)

1 Ответ

0 голосов
/ 11 июля 2019

Это потому, что информация протокола отсутствует в url. Чтобы это работало, переменная url должна быть http://api.upcitemdb.com/... или https://api.upcitemdb.com/... (зависит от того, какой протокол поддерживает сервер api.upcitemdb.com).

В Fetch Standard , конструктор Request определяется как:

Конструктор Request (input, init) должен выполнить следующие шаги:

...

  1. Если input является строкой, то:

    1. Пусть parsedURL будет результатом анализа ввода с baseURL.

...

То есть, если отсутствует http:// или https://, текущий сервер будет считаться «baseURL» (http://127.0.0.1:3000/), а api.upcitemdb.com будет указываться как часть пути URL (а не имени хоста).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...