标签: vapor

使用带有Vapor和Fluent的Mongo DB

我为这样的用户制作了一个模型:

import Vapor
import Fluent
import Foundation

final class User: Model {

var id: Node?
var username: String
var name : String
var surename : String
var password : String
var credit : String
var isBlocked : String
var isAdmin : String

init(username: String, name: String, surename: String, password: String, credit: String, isBlocked: String, isAdmin: String) {
    self.id = UUID().uuidString.makeNode()
    self.username = username
    self.name = name
    self.surename = surename
    self.password = password
    self.credit = credit
    self.isBlocked = isBlocked
    self.isAdmin = …
Run Code Online (Sandbox Code Playgroud)

fluent mongodb vapor

3
推荐指数
1
解决办法
1301
查看次数

Swift Vapor Postgres Xcode构建错误:无法构建Objective-C模块'CPostgreSQLMac'

将steam postgresql连接器添加到Package.swift后出现构建错误

    import PackageDescription

        let package = Package(
        name: "todo_vapor_swift",
            dependencies: [
                .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1, minor: 5),
                .Package(url: "https://github.com/vapor/postgresql-provider", majorVersion: 1, minor: 0)
],
exclude: [
    "Config",
    "Database",
    "Localization",
    "Public",
    "Resources",
]
Run Code Online (Sandbox Code Playgroud)

)

postgresql xcode swift vapor

3
推荐指数
1
解决办法
976
查看次数

如何使用蒸气响应图像?

我只想拥有一个控制器操作,该操作基本上与直接通过Public/文件夹访问图像相同。区别在于路由可以是您想要的任何路径,返回的图像将是在控制器功能内部确定的图像。但是,如何做出适当的回应?

我的方法如下所示:

import Vapor

final class ImageController {
    func read(_ req: Request) throws -> Future<Data> {
        let directory = DirectoryConfig.detect()
        let promise = req.eventLoop.newPromise(Data.self)
        req.eventLoop.execute {
            do {
                let data = try Data(contentsOf: URL(fileURLWithPath: directory.workDir)
                    .appendingPathComponent("Public", isDirectory: true)
                    .appendingPathComponent("image.png"))
                promise.succeed(result: data)
            } catch {
                promise.fail(error: error)
            }
        }
        return promise.futureResult
//        try req.content.encode(data, as: .png)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在我看来,我过于复杂了,对吗?

swift vapor

3
推荐指数
2
解决办法
473
查看次数

用于敏感数据的Vapor 3 GET路由

在Vapor 3上使用了大量的教程,我没有弄清楚如何编辑输出JSON,以获得特定的用户对象我创建路径:

protectedRouter.get("users", User.parameter, use: userController.user)
Run Code Online (Sandbox Code Playgroud)

方法在UserController:

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

当然,它会发送User对象内的所有内容,包括电子邮件和散列密码.大.我怎么能避免这个?我的意思是我只想发送有关用户的公共信息(姓名,昵称,身份证等).

swift vapor

3
推荐指数
1
解决办法
86
查看次数

如何在Vapor 3中处理密码哈希?

我正在构建一个类似于在Vapor auth-template模板中使用的基本身份验证设置(从这里开始).我将所有内容设置为与模板中相同的方式.

但是,我想加盐.我可以在创建时为用户生成一个salt:

static func create(_ req: Request, newUserRequest user: CreateUserRequest) throws -> Future<User.Public> {
    return User.query(on: req).filter(\.username == user.username).first().flatMap { existingUser in
        guard existingUser == nil else {
            throw Abort(.badRequest, reason: "A user with the given username already exists.")
        }

        guard user.password == user.passwordVerification else {
            throw Abort(.badRequest, reason: "Given passwords did not match.")
        }

        let count = 16
        var pw_salt_data = Data(count: count)
        let _ = pw_salt_data.withUnsafeMutableBytes { mutableBytes in
            SecRandomCopyBytes(kSecRandomDefault, count, mutableBytes)
        }
        let …
Run Code Online (Sandbox Code Playgroud)

swift vapor

3
推荐指数
1
解决办法
208
查看次数

Vapor HTTPClient 跟随重定向

我不知道如何跟踪来自外部 URL 的重定向。我访问的 URL 出于某种原因给了我 301,即使我没有在邮递员那里得到它。我想知道如何让 HTTPClient 跟随重定向,或者我是否做错了什么以获得 301。

我确实读过这个 PR,但我认为它不再相关了。HTTPClient 文档也不包括重定向。在下面的示例中,我将 User-Agent 设置为与 Postman 相同,以尽可能模仿 Postman 的请求。

到目前为止我的代码:

import Vapor
import HTTP

protocol DataFetching {
  func getFromURL(_ url: URL, on worker: Worker) throws -> Future<HTTPResponse>
}

class DataFetcher: DataFetching {

  enum Error: Swift.Error {
    case unknown
  }

  func getFromURL(_ url: URL, on worker: Worker) throws -> Future<HTTPResponse> {

    guard let host = url.host else { throw Error.unknown }

    var headers = HTTPHeaders()
    headers.replaceOrAdd(name: .userAgent, value: …
Run Code Online (Sandbox Code Playgroud)

swift vapor

3
推荐指数
1
解决办法
662
查看次数

如何在 Vapor Swift 中等待多个期货完成?

我想弄清楚如何等待多个期货完成。我知道如何异步等待它们: summaryFuture.whenSuccess {}但这只是处理一种情况。我需要等待 summaryFuture 和sponsorFuture 完成,然后在发回响应之前处理两者。

  let summaryFuture = client.post(summaryURL) { post in
        post.http.headers.add(name: "authtoken", value: token)
        }.flatMap(to: SummaryModel.self) { (response) in
            return try response.content.decode(SummaryModel.self)
    }

  let sponsorEnrollerFuture = client.post(sponsporEnroller) { post in
        post.http.headers.add(name: "authtoken", value: token)
        }.flatMap(to: SponsorEnrollerModel.self) { (response) in
            return try response.content.decode(SponsorEnrollerModel.self)
    }
Run Code Online (Sandbox Code Playgroud)

xcode swift vapor

3
推荐指数
1
解决办法
2056
查看次数

如何在Vapor 3中进行第三方api调用?

我想在Vapor 3中使用一些参数进行后期调用。

POST: http://www.example.com/example/post/request

title: How to make api call
year: 2019
Run Code Online (Sandbox Code Playgroud)

可以使用哪个包装/功能?

api swift vapor

3
推荐指数
1
解决办法
308
查看次数

dyld:库未加载:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib

我通过自制软件安装了蒸气,然后立即想通过执行跳入项目,vapor new Hello但是在终端中返回了以下消息:

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/bin/vapor
Reason: image not found
zsh: abort      vapor new Hello
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法来解决此问题,例如通过brew卸载并重新安装openssl,但这没有用。还尝试了我在互联网上找到的东西,但是没有任何效果。我认为这仅与蒸气有关,而仅与1.0.0版一起使用,而与1.1.1版本无关,这就是我所拥有的。我想我需要降级到1.0.0,但是我该怎么做呢?如果重要的话,我在MacOS Catalina上。提前致谢。

macos homebrew openssl swift vapor

3
推荐指数
24
解决办法
837
查看次数

只打开 Package.swift 和使用 `swift package generate-xcodeproj` 然后打开生成的 xcodeproj 文件有什么区别?

我遵循了 Vapor 网站文档,创建了 hello 项目。 蒸汽文档

在hello项目路径下,swift build在终端输入。但是当打开 Package.swift 时,Xcode 再次开始获取蒸汽。

为什么?所有依赖项存储库都在.build路径中不是?为什么 Xcode 又开始重新获取 Vapor?

swift package generate-xcodeproj可以帮助生成 xcode 项目,似乎所有依赖项都不再打包了。只是团体。

打开 Package.swift & useswift package generate-xcodeproj然后打开生成的 xcodeproj 文件有什么区别?

用 Xcode 打开 Pacakge.swift,获取 Vapor 非常慢。有没有更好的方法?

就像告诉 Xcode 一切都在./build路径中一样。

xcode swift swift-package-manager vapor

3
推荐指数
1
解决办法
146
查看次数