0

我正在使用 IBM Cloud Bluemix 环境和他们的 Kitura 风格的服务器端 Swift 实现。当然,关键是能够发出各种 HTTP 请求 到目前为止,我已经能够处理带有纯 JSON 正文的 GET 请求和 POST 请求。当涉及到 form-data 或 application/x-www-form-urlencoded 时,我被卡住了。从我读到的内容看来,我应该使用 Kitura 提供的 BodyParser 类,但恐怕我什至不确定如何在代码中实际使用它。到目前为止,我主要使用了以下非常有用的帖子。 来自 Rob Allen 来自 Horea Porutiu 来自 Kevin Hoyt

据我所知,我现在需要使用 Kitura 的 BodyParser 和 Router 类,但在我看来,htose 在 OpenWhisk + Kitura Swift 的 IBM Cloud Function 实现中得到了很好的照顾......所以我不是太现在确定...

任何想法或指针任何人?谢谢

4

2 回答 2

2

您可以使用request.readString()原始格式读取正文信息。

如果你有BodyParser中间件使用:

router.all("/name", middleware: BodyParser())

然后您可以将其用于 urlencoded 正文:

router.post("/name") { request, response, next in
    guard let parsedBody = request.body else {
        next()
        return
    }

    switch parsedBody {
        case .urlEncoded(let data):
            let name = data["name"].string ?? ""
            try response.send("Hello \(name)").end()
        default:
            break
    }
    next()
}

哪里data[String:String]字典。

于 2018-01-16T17:19:06.747 回答
1

好的,我回答了我自己的问题,进一步了解 Kitura 和 Kitura-Net 是两个不同的东西。Kitura-Net 中的 ClientRequest 类处理所有这些。 都在这里

于 2018-01-16T05:08:18.983 回答