angular - json-server 中用于嵌套端点的自定义路由
问题描述
为了测试客户端的ApiService
类,我需要用一个模拟替换我的真实后端 URL,为此我选择了json-server。http://localhost:4200/v1/api
我设置了一个代理配置来转发所有以to开头的请求http://localhost:3000
:
{
"/api/v1": {
"target": "http://localhost:3000",
"secure": false
}
}
当我发送请求时它可以工作,http://localhost:4200/api/v1/users
但不适用于嵌套端点(例如http://localhost:4200/api/v1/auth/token
)。我发现json-server不支持对嵌套对象的请求,所以我改变了我的data.json如下:
{
"auth_token": {
"access_token":"accesstoken1",
"token_type":"Bearer"
}
}
并为json-server设置routes.json:
{
"/auth/token": "/auth_token"
}
但它仍然无法通过json-server使用routes.json:
[0] Other routes
[0] /auth/token -> /auth_token
我究竟做错了什么?
解决方案
由于我的错误和json-server的魔力 ,我的解决方案不起作用:
我发现json-server会自动替换/api/v1
为/
。但是如果你使用上面的路由设置,那么/api/v1/auth/token
不会被/api/v1/auth_token
自动替换,你会得到404错误。
所以json-server的行为让我产生了一种错觉,即Angular中的代理设置替换http://localhost:4200/api/v1
为http://localhost:3000
. 因此,在我的情况下,正确的路由如下所示:
{
"/api/v1/auth/token": "/api/v1/auth_token"
}
推荐阅读
- python - Django 无法分配“'Pizza'”:“Order.Food_Name”必须是“Foods”实例
- android - 如何在 EditText DrawableRight 上执行点击监听?
- r - R如何将MultiLineString GeoJson文件转换为具有长列和纬度列的数据框?
- laravel - Laravel Passport 在 AuthServiceProvider 中抛出错误
- javascript - javascript 的对象通过引用传递的例外是什么?
- testing - 在 Idris 中测试证明是否合理
- python - nunique 不包括 pandas 中的一些值
- c# - 我们如何使用脚本在 prefeb(prefeb 包含两种原始类型形状)中淡入淡出 unity3
- javascript - 无法在电子中向 showSaveDialog 添加过滤器
- mysql - 帖子、评论、回复和点赞数据库架构