蒸气3 GET路线以获取敏感数据

时间:2018-11-05 01:38:11

标签: swift vapor

使用有关Vapor 3的大量教程,我未能弄清楚如何编辑输出JSON,例如要获取我创建的特定用户对象的路线:

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

UserController中的方法:

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

当然,它会发送User对象内部的所有内容,包括电子邮件和哈希密码。大。如何避免这种情况?我的意思是我只想发送有关用户的公共信息(姓名,昵称,身份证等...)。

1 个答案:

答案 0 :(得分:8)

创建一个代表所需输出结构的单独结构。使该结构符合Content。每当您返回用户时,请先将其转换为该结构。为方便起见,向用户添加扩展名可以做到这一点。

一种新兴的常见模式是将该结构嵌套在称为Public的Model中。即

extension User {
    struct Public: Content { ... }

    func makePublic() -> Public { ... }
}

您的路线将返回User.Public而不是User。请注意,此模式反过来也很有用,它可以为用户创建单独的“输入”表示形式。

您可以在Vapor → Content → Dynamic Properties的Vapor文档中详细了解此内容。