json-server 中嵌套端点的自定义路由

Шах*_*Шах 5 json-server angular

为了测试客户端的ApiService类,我需要用模拟替换我的真实后端 URL,出于这些目的,我选择了json-server。我设置了一个代理配置来转发所有以http://localhost:4200/v1/apito开头的请求http://localhost:3000

{
    "/api/v1": {
        "target": "http://localhost:3000",
        "secure": false
    }
}
Run Code Online (Sandbox Code Playgroud)

当我发送类似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"
    }
}
Run Code Online (Sandbox Code Playgroud)

并为json-server设置paths.json

{
    "/auth/token": "/auth_token"
}
Run Code Online (Sandbox Code Playgroud)

但它仍然无法通过json-server使用paths.json工作:

[0]   Other routes
[0]   /auth/token -> /auth_token
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Шах*_*Шах 1

由于我的错误和json-server的魔力, 我的解决方案不起作用:

我发现json-server/api/v1会自动替换/。但如果您使用上面的路由设置,则/api/v1/auth/token不会/api/v1/auth_token自动替换,并且您将收到404错误。

因此json-server行为给我造成了一种错觉,认为Angular中的代理设置会替换http://localhost:4200/api/v1http://localhost:3000. 因此,在我的例子中,正确的路由如下所示:

{
    "/api/v1/auth/token": "/api/v1/auth_token"
} 
Run Code Online (Sandbox Code Playgroud)