为OpenWhisk / Kitura Swift HTTP POST请求发送form-data / application / x-www-form-urlencoded正文

时间:2018-01-16 03:33:51

标签: swift ibm-cloud openwhisk kitura

我正在努力使用IBM Cloud Bluemix环境和他们的Kitura服务器端Swift实现。 当然,关键是能够发出各种HTTP请求 到目前为止,我已经能够使用纯JSON主体处理GET请求和POST请求。 当涉及到form-data或application / x-www-form-urlencoded时,我很困惑。 从我读到的,似乎我应该使用Kitura提供的BodyParser类,但我担心我甚至不确定如何在代码中实际使用它。 到目前为止,我大部分时间都使用了以下非常有用的帖子。 From Rob Allen From Horea Porutiu From Kevin Hoyt

据我所知,我现在需要使用Kitura的BodyParser和Router类,但在我看来,在OpenWhisk + Kitura Swift的IBM Cloud Function实现中,htose已经完成了...所以我我现在不太确定......

任何想法或指针有人吗? 感谢

2 个答案:

答案 0 :(得分: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]词典。

答案 1 :(得分:1)

好吧,我回答了自己的问题,进一步了解Kitura和Kitura-Net是两回事。 Kitura-Net中的ClientRequest类处理所有这些。 All here