我已经按照这个7 hour tutorial创建了一个blog,几乎到了。有一个步骤我跳过了,因为我不想使用教程中建议的单独的客户机/服务器托管。相反,我有一个单独的heroku服务器,它为公共服务器之外的客户机提供服务:
const app = express();
app.use(express.static('public'))
app.use('/posts', postRoutes);
app.use('/user', userRoutes)
您可以看到,该应用程序还为/posts
和/user
路径提供了一些rest请求,但是,该教程还引导我将这些路径添加到url客户端。
例如,您可以访问我的应用程序(https://blog-tutorial-888.herokuapp.com),但您将立即被“重定向”到(https://blog-tutorial-888.herokuapp.com/posts)。
我说“重定向”是因为在客户端,它看起来像是在那个站点,目的是让你可以做一些事情,比如导航到下一页,这将是在(https://blog-tutorial-888.herokuapp.com/posts?page=2)。
但是如果你真的去到这些链接,或者刷新页面,你会看到rest请求的结果,这是一个巨大的文本块(这显然是因为我有app.use('/posts', postRoutes)
)。
有没有办法解决这个问题?在这个端点上同时服务html和rest请求?
1条答案
按热度按时间f3temu5u1#
要使用单个服务器通过REST API提供前端和数据,您需要区分路径,例如,通过向URL添加
/api
来获取数据,如下所示:然后,在所有
/api
处理程序下面添加以下行,以便对于每个其他请求,您都发送加载React包的HTML:当然,不要忘记在您的前端查询url中添加
/api
,而不是路由设置: