从API服务器提供SPA

时间:2017-01-23 23:14:23

标签: javascript rest architecture client-server single-page-application

据我所知,服务SPA的事实上的方法是为GET请求实现catch all方法。那么,如果我同时托管API并从同一服务器提供SPA,并且需要检索资源,例如,会发生什么? /users

如何在API服务器为您的SPA提供服务的设置中处理路由API调用/资源?

e.g。使用快递:

import express from 'express'
import path from 'path'

const app = express()
const port = 3000

app.use(express.static(path.resolve(__dirname, '../client/dist')));


// Conflict here  <---------------------
app.get('/users', (req,res) => {
  // respond with users 
})

// And here       <---------------------
app.all('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, '../client/dist', 'index.html'));
})

app.listen(process.env.PORT || port, () => {
  console.log(`App listening on ${process.env.PORT || port}`)
})

Intuition告诉我在为API调用的/api资源实现异常的同时,为SPA的GET请求实现catch all。但是,通过浏览器访问/api存在问题。

任何想法都非常感激。

1 个答案:

答案 0 :(得分:0)

添加好主意会在您的其余API端点上添加api前缀。与您的用户API /api/users一样。