как перенаправить серверную часть из запроса на выборку в зависимости от ответа сервера на сторонний API - PullRequest
0 голосов
/ 10 июля 2019

Мне было интересно, как я могу условно перенаправить с сервера во время запроса на выборку. Я бы хотел перенаправить пользователя на страницу с ошибкой или отобразить достоверные данные в зависимости от ответа от стороннего API, на который я бы позвонил. К сожалению, я получаю эту ошибку: SyntaxError: Unexpected token < in JSON at position 0. Увидев эту ошибку, я увидел, что ошибка происходит в части res.json(), и при замене ее на res.text() я вижу, что получаю html для /error. Но мне интересно, чтобы меня перенаправили на страницу с этим HTML. Код выглядит следующим образом:

// server code

const express = require('express');
const fetch = require('node-fetch');
const app = express();


app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept'
  );
  next();
});

app.get('/error', (req, res) => {
  res.send('<p>some html for error</p>');
});

app.get('/plans', (req, res) => {
  fetch('github or some 3rd party api')
  .then(responseFrom3rdParty => res.send(responseFrom3rdParty))
  .catch(err => res.redirect('/error'));
});

app.listen(8081, () => console.log('listening on 8081'));


// client code

import React from 'react';

function App() {
  const onClick = () => {
    fetch('http://localhost:8081/plans')
      .then(res => res.json())
      .then(js => console.log(js))
      .catch(err => console.error(err));
  };
  return (
    <div className="App">
      <button onClick={onClick}>Get plans</button>
    </div>
  );
}

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