У меня есть некоторые проблемы с маршрутизацией в node.js Express - PullRequest
0 голосов
/ 14 мая 2018

мое приложение - SPA, использующее реагирование

Я пытаюсь построить API, используя экспресс в node.js

так что мой код сервера

const express = require('express');
const app = express();

const PORT = 80;
app.listen(PORT, () => {
    console.log('connected')
}}

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/public/index.html')
})

//api
app.get('/user', .....
   res.json(~~~)
app.post('/user', .........
   res.json(~~~~)

Потому что мой клиент спа (реагирует),

В коде сервера есть только один 'sendFile'.

все остальное - API, который возвращает JSON.

Так что я хочу использовать API только для получения или ajax

Однако текущая ситуация такова, что если клиент имеет прямой доступ к URL-адресу API,

браузер может видеть json вместо моего spa.

Есть ли способ решить эту проблему?

спасибо.

1 Ответ

0 голосов
/ 14 мая 2018

Чтобы использовать SPA-способ маршрутизации, вам нужно разделить URL-адреса страниц и api-URL:

const express = require('express');
const app = express();

const PORT = 80;
app.listen(PORT, () => {
    console.log('connected')
}}

//api
app.get('/api/user', .....
   res.json(~~~)
app.post('/api/user', .........
   res.json(~~~~)

app.get('/*', (req, res) => {
   res.sendFile(__dirname + '/public/index.html')
})

Обратите внимание, что:

  1. /* маршрут идет после API, поэтому все маршруты, которые не соответствуют предыдущим путям, отображают вашу страницу SPA
  2. Вам необходимо использовать * в шаблоне URL-адреса SPA, поэтому при маршруте к /user он отображает страницу SPA, а затем на клиенте вы отображаете user page
  3. api префикс, который будет различать ваши API и SPA пути
...