为OpenWhisk/Kitura Swift HTTP POST请求发送表单数据/应用程序/x-www-form-URLEcoded正文

为OpenWhisk/Kitura Swift HTTP POST请求发送表单数据/应用程序/x-www-form-URLEcoded正文,swift,ibm-cloud,openwhisk,kitura,Swift,Ibm Cloud,Openwhisk,Kitura,我正在努力使用IBM Cloud Bluemix环境及其Kitura风格的服务器端Swift实现。 当然,关键是能够发出各种各样的HTTP请求 到目前为止,我已经能够用纯JSON体处理GET请求和POST请求。 当涉及到表单数据或应用程序/x-www-form-urlencoded时,我被卡住了。 从我所读到的内容来看,我似乎应该使用Kitura提供的BodyParser类,但恐怕我甚至不知道如何在代码中实际使用它。 到目前为止,我主要使用了以下非常有用的帖子。 据我所知,现在我需要使用Kit

我正在努力使用IBM Cloud Bluemix环境及其Kitura风格的服务器端Swift实现。 当然,关键是能够发出各种各样的HTTP请求 到目前为止,我已经能够用纯JSON体处理GET请求和POST请求。 当涉及到表单数据或应用程序/x-www-form-urlencoded时,我被卡住了。 从我所读到的内容来看,我似乎应该使用Kitura提供的BodyParser类,但恐怕我甚至不知道如何在代码中实际使用它。 到目前为止,我主要使用了以下非常有用的帖子。

据我所知,现在我需要使用Kitura提供的BodyParser和Router类,但在我看来,在OpenWhisk+Kitura Swift的IBM云函数实现中,这些类很早就得到了处理。。。所以我现在不太确定

有什么想法或建议吗?
谢谢

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

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

如果使用
BodyParser
中间件,请使用:

router.all("/name", middleware: BodyParser())
然后您可以将其用于URL编码的实体:

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]
字典。

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

如果使用
BodyParser
中间件,请使用:

router.all("/name", middleware: BodyParser())
然后您可以将其用于URL编码的实体:

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()
}
其中,
数据
是一个
[String:String]
字典