【问题标题】:Vapor 3 GET route for sensitive data敏感数据的 Vapor 3 GET 路由
【发布时间】:2019-04-08 09:23:18
【问题描述】:

使用大量关于 Vapor 3 的教程,我无法弄清楚如何编辑输出 JSON,f.e.为了获得特定的用户对象,我创建了路由:

protectedRouter.get("users", User.parameter, use: userController.user)

UserController中的方法:

func user(_ req: Request) throws -> Future<User> {
    return try req.parameters.next(User.self)
}

当然,它会发送 User 对象内的所有内容,包括电子邮件和散列密码。伟大的。我怎样才能避免这种情况?我的意思是我只想发送有关用户的公开信息(姓名、昵称、ID 等...)。

【问题讨论】:

    标签: swift vapor


    【解决方案1】:

    创建一个单独的结构来表示您想要的输出结构。将该结构符合Content。每当您返回用户时,首先将其转换为该结构。为了方便起见,向 User 添加一个扩展是很好的。

    出现的一种常见模式是将此结构嵌套在称为公共的模型中。即,

    extension User {
        struct Public: Content { ... }
    
        func makePublic() -> Public { ... }
    }
    

    然后,您的路线将返回 User.Public 而不是 User。请注意,此模式在反向方面也很有用,用于为您的用户创建单独的“输入”表示。

    您可以在 Vapor 的文档Vapor → Content → Dynamic Properties 中阅读更多相关信息。

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 2013-11-03
      • 2020-11-10
      • 2016-09-12
      • 1970-01-01
      • 2017-01-01
      • 2016-09-16
      • 2021-10-20
      • 2011-05-15
      相关资源
      最近更新 更多