我正在努力使用 IBM Cloud Bluemix 环境及其 Kitura 风格的服务器端 Swift 实现。当然,关键是能够发出各种HTTP请求。到目前为止,我已经能够使用纯 JSON 正文处理 GET 请求和 POST 请求。当涉及到form-data或application/x-www-form-urlencoded时,我陷入了困境。从我读到的内容来看,我似乎应该使用 Kitura提供的 BodyParser 类,但恐怕我什至不确定如何在代码中实际使用它。到目前为止,我主要使用以下非常有用的帖子来制作我的方式。来自罗伯·艾伦 来自 霍雷亚·波鲁蒂乌 来自 凯文·霍伊特
据我现在了解,我需要使用 Kitura 的 BodyParser 和 Router 类,但在我看来,htose 在 OpenWhisk + Kitura Swift 的 IBM Cloud Function 实现中得到了很好的处理......所以我现在不太确定...
任何想法或指针任何人?谢谢
您可以使用 request.readString()
以原始格式读取正文信息。
如果您有BodyParser
中间件在运行,请使用:
router.all("/name", middleware: BodyParser())
然后你可以将其用于 urlencode 体:
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]
字典。
好的,我回答了我自己的问题,进一步了解 Kitura 和 Kitura-Net 是 2 个不同的东西。Kitura-Net 中的 ClientRequest 类处理所有这些。都在这里