标签: vapor

无法绑定到0.0.0.0:8080,它可能正在使用或需要sudo

有时我尝试从Xcode运行Vapor应用程序时会出现此错误.重新打开Xcode没有帮助,只重新启动系统.这是框架的错误吗?我该怎么做才能防止这种情况发生?

swift vapor

14
推荐指数
1
解决办法
1604
查看次数

如何使用Vapor提供静态文件?

我正在尝试使用Swift和Vapor框架编写服务器端应用程序.但是,我无法弄清楚,如何使用Vapor提供静态文件.将它们移动到Publicor Resources目录是不够的.

我怎样才能做到这一点?

UPD. 我执行了Tanner Nelson建议的步骤,但它仍然无效.

到目前为止我尝试了什么:

  1. vapor buildvapor run(使用Vapor Toolbox v.6.6).

  2. ./build/debug/App从根目录(包含Package.swift).

  3. Tanner Nelson建议,在编辑方案后运行Xcode 8 beta.

在所有这些情况下我都会收到错误 {"error":true,"message":"Page not found"}

我有vapor_logo.png一个Public文件夹里面的文件,也有文件夹里面的Public/images/文件.我尝试请求它但它失败了.我提出的要求:http://localhost:8080/image/vapor_logo.pnghttp://localhost:8080/vapor_logo.png.但是,其他路线工作正常.

UPD 2.嗯,这就是我的错误.首先,我认为被调用的文件vapor_logo.png实际上被调用了vapor-logo.png.其次,当您提出请求时,案件很重要.我也尝试使用名称请求文件IMG_8235.JPG但写入文件扩展名为jpg,因此出错了.

所以,回顾一下:如果您遇到与我相同的问题,请遵循Tanner Nelson的回答,并确保所请求文件的名称与磁盘上的文件名完全匹配.

swift vapor

13
推荐指数
3
解决办法
3432
查看次数

无法通过HTTP/REST错误访问FireBase数据库403禁止访问

用于服务器+ Xcode 8.1的Swift + Vapor框架

我正在尝试阅读Firebase实时数据库向我的数据库发出HTTP请求,但我得到了许可被拒绝.

以下是这些步骤:
1.使用从"console.developers.google.com"下载的密钥创建JWT签名
2.将POST请求发送到OAuth2服务器并获取访问令牌
3.将GET请求发送到firebase数据库,并从中接收访问令牌OAuth2服务器.

我得到"权限被拒绝",HTTP/1.1 403禁止

// the header of the JSON Web Token (first part of the JWT)
let headerJWT = ["alg":"RS256","typ":"JWT"]

// the claim set of the JSON Web Token
let jwtClaimSet =
  ["iss":"firebase-adminsdk-kxx5h@fir-30c9e.iam.gserviceaccount.com",
 "scope":"https://www.googleapis.com/auth/firebase.database", //is this the correct API to access firebase database?
 "aud":"https://www.googleapis.com/oauth2/v4/token",
 "exp": expDate,
 "iat": iatDate]


drop.get("access") { request in
var accesstoken = "ya29.ElqhA-....XXXX"

 let responseFirebase = try drop.client.get("https://fir- 30c9e.firebaseio.com/data/Users.json",
  headers: ["Authorization":"Bearer \(accesstoken)"], 
     query: [:])

print("FirebaseResponse_is \(responseFirebase)")
return "success" …
Run Code Online (Sandbox Code Playgroud)

firebase service-accounts firebase-realtime-database vapor

13
推荐指数
2
解决办法
8239
查看次数

openssl/ctls使用蒸汽2的麻烦

如何解决我在Vapor 2中遇到的这些OpenSSL/TLS问题?他们阻止我在命令行和Xcode中编译我的项目.

在SPM构建期间:

note: you may be able to install ctls using your system-packager:

    brew install ctls

note: you may be able to install ctls using your system-packager:

    brew install openssl
Run Code Online (Sandbox Code Playgroud)

SPM构建失败后:

Linking ./.build/debug/Run
ld: library not found for -lcrypto for architecture x86_64
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-3.1-DEVELOPMENT-SNAPSHOT-2017-03-07-a.xctoolchain/usr/bin/swift-build-tool -f /Users/tanner/Desktop/PackageConfig/.build/debug.yaml
Run Code Online (Sandbox Code Playgroud)

同样在SPM中:

<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "shim.h"
        ^ …
Run Code Online (Sandbox Code Playgroud)

ssl openssl vapor

12
推荐指数
1
解决办法
1967
查看次数

升级swift后蒸汽工具箱坏了

升级到Swift 3.1后尝试使用Vapor工具箱时崩溃了.

dyld: lazy symbol binding failed: Symbol not found: __TTSfq4n_s___TFVSS13CharacterView38_measureExtendedGraphemeClusterForwardfT4fromVVSS17UnicodeScalarView5Index_Si
  Referenced from: /usr/local/bin/vapor
  Expected in: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/libswiftCore.dylib

dyld: Symbol not found: __TTSfq4n_s___TFVSS13CharacterView38_measureExtendedGraphemeClusterForwardfT4fromVVSS17UnicodeScalarView5Index_Si
  Referenced from: /usr/local/bin/vapor
  Expected in: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/libswiftCore.dylib
Run Code Online (Sandbox Code Playgroud)

swift vapor

12
推荐指数
1
解决办法
2076
查看次数

整合蒸汽和反应

我正在构建一个经典的数据库支持的动态网站,它将允许用户共享潜在客户.

我有点老了,想要使用纯MVC架构来实现我的系统.我正在考虑在纯粹的'V'模式下使用React,Vapor履行'M'和'C'角色.我需要一些帮助来理解如何集成Vapor和React,或者更精确地确定哪些功能最适合驻留.

我的Vapor服务器端应用程序,处理所有安全性,路由,模型(通过Fluent存储在PostgreSQL数据库中)和模型控制器.模型控制器仅向通过中间件层的请求输出纯JSON响应:检查用户访问"命令"的权限(基于数据库中保存的角色配置文件,允许动态更改权限); 验证访问关联记录的权限(基于他们可以成为的组的层次结构); 并记录用户正在执行的操作.

到目前为止,我一直在使用Leaf模板引擎为用户使用的网站生成.html文件.Leaf模板通常只传递一个或两个属性 - 比如将要显示的记录的id,然后我使用一些javascript通过AJAX调用将数据拉回模型控制器.模型控制器和中间件可以访问cookie以满足所有用户身份验证/会话相关的需求.这样可以在模型和视图之间保持非常清晰的分离,并且可以让我更轻松地构建一个称为将来调用模型RESTful接口的移动应用程序.

现在我正在考虑使用React进行Web前端,使用React-Bootstrap库.但说实话,我有点迷失了如何正确地整合这个.例如,渲染页面以显示记录 - 如何传递记录ID(伪代码警告!):

a)我应该创建一个叶子模板,我将id作为参数传递给它.模板只需要一小段javascript就可以将参数传递给react.js脚本?蒸汽方面看起来像:

drop.get("viewRecord", myObject) { request in
    let parameters = try Node(node:["objectId": myObject?.id.makeNode()])
    return try webApp.view.make("viewObject", parameters)
}
Run Code Online (Sandbox Code Playgroud)

而.leaf模板有点像:

<script ...>
    var objectID = #(viewObject.id)
</script>
Run Code Online (Sandbox Code Playgroud)

b)或者我应该进行调用,例如,我将id作为URL参数传递,然后我将使用一些小的javascript提取并传递给react组件:

drop.get("viewRecord", myObject) { request in
     return Response(redirect: "/viewObject.html", myObject?.Id)
}
Run Code Online (Sandbox Code Playgroud)

c)Vapor中的其他方式?我错过了React的观点吗?我认为它的目的是关注前端和后端不可知,但React Router建议它也需要一些后端工作吗?

d)放弃反应,并说贴叶?

在最后一点 - 如果我采用React方式,我是否会为每个"屏幕"创建一个.jsx文件(转换为.js),我会为其构建一个叶子模板?如果是这样,我将如何通过引用公共元素(例如react和react-bootstrap组件)来减少文件大小.目前我正在使用Webpack生成一个.js文件.我假设我不会使用React路由器,因为我使用Vapor.

对不起,如果其中一些是非常基本的,但我对后端更加满意,但希望前端也能很好地设计,并且最大限度地分担责任.

谢谢你的想法!

reactjs swift vapor

12
推荐指数
2
解决办法
1512
查看次数

使用PostgreSQL在Vapor 3中上传图像

我正在关注这些家伙Martin Lasek Tutorials,现在我正在"图片上传".似乎没人能回答"如何上传i Vapor 3图像"的问题

Db连接正常,所有其他值都保存.

这是我的创建方法:

    func create(_ req: Request) throws -> Future<Response> {

    return try req.content.decode(Question.self).flatMap { question in
        return question.save(on: req).map { _ in

            return req.redirect(to: "/form")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和型号:

final class Question: PostgreSQLModel {

var id: Int?
var questionText: String
var answers: [String]
var theme: String?
var imageName: String?
var imageData: File?

init(id: Int? = nil, questionText: String, answers: [String], theme: String, imageName: String?, imageData: File?) {

    self.id = id
    self.questionText = questionText
    self.answers …
Run Code Online (Sandbox Code Playgroud)

multipartform-data swift vapor leaf

11
推荐指数
1
解决办法
1048
查看次数

Swift:反斜杠点是什么"\".意思?

我是Swift后端的新手,并且认为我会快速使用Vapor在一个侧面项目上运行起来......我跑了vapor new WebServer --template=auth-template,现在我正在试图找出类似return \.email意味着什么.有关更多上下文,我正在查看WebServer> Sources> App> Models> Users.swift:

import Authentication
import FluentSQLite
import Vapor

/// Allows users to be verified by basic / password auth middleware.
extension User: PasswordAuthenticatable {
    /// See `PasswordAuthenticatable`.
    static var usernameKey: WritableKeyPath<User, String> {
        return \.email
    }

// ...
}
Run Code Online (Sandbox Code Playgroud)

这是User类的定义:

/// A registered user, capable of owning todo items.
final class User: SQLiteModel {
    // {omit extra code} ...

    var email: String

    // {omit extra code} ...

    /// Creates …
Run Code Online (Sandbox Code Playgroud)

authentication swift vapor

11
推荐指数
1
解决办法
1340
查看次数

使用 iPhone 连接到 Mac 上运行的蒸汽服务器

我有一个使用服务器端 swift vapor 3 开发的 Web 应用程序,该应用程序在我的 Mac 上本地运行。我想在与 Mac 相同的 wifi 上使用我的 iPhone 访问它。我怎样才能做到这一点。我尝试使用http://<the ip of my Mac on local network>:8080但没有工作,即使防火墙完全关闭。提前致谢。

localhost swift vapor

11
推荐指数
3
解决办法
1383
查看次数

使用Unix Socket进行FluentMySQL连接

我正在按照Vapor文档中的MySQL包入门部分进行操作,我可以一步一步地跟进,因此,我已经成功建立了与MySQL数据库的连接,使用这样的自定义数据库凭据:

/// Register providers first
try services.register(FluentMySQLProvider())

// MySQL database
let mySQLConfig = MySQLDatabaseConfig(hostname: "localhost",
                                      port: 3306,
                                      username: "root",
                                      password: "thisismyrootpassword",
                                      database: "lol_database",
                                      capabilities: .default,
                                      characterSet: MySQLCharacterSet.utf8_general_ci,
                                      transport: MySQLTransportConfig.cleartext)

services.register(mySQLConfig)
Run Code Online (Sandbox Code Playgroud)

基于MySQLDatabaseConfig对象的文档,我无法找到是否可以基于Unix Socket配置连接到MySQL数据库.

我能够在生产环境下为应用程序提供的只是数据库名称,用户名,密码和套接字路径,它们将在表单中 /cloudsql/project1:us-central1:instance1

有关更多参考,我要做的是根据本教程从Google Cloud App Engine灵活环境连接到SQL数据库:https://cloud.google.com/appengine/docs/flexible/nodejs/using- cloud-sql#setting_up_your_local_environment环境当然是Vapor仍然是数据库客户端与数据库服务器建立连接的唯一方法.

谢谢您的帮助.

mysql swift vapor

10
推荐指数
1
解决办法
155
查看次数