为OpenWhisk/Kitura Swift HTTP POST请求发送表单数据/应用程序/x-www-form-URLEcoded正文
我正在努力使用IBM Cloud Bluemix环境及其Kitura风格的服务器端Swift实现。 当然,关键是能够发出各种各样的HTTP请求 到目前为止,我已经能够用纯JSON体处理GET请求和POST请求。 当涉及到表单数据或应用程序/x-www-form-urlencoded时,我被卡住了。 从我所读到的内容来看,我似乎应该使用Kitura提供的BodyParser类,但恐怕我甚至不知道如何在代码中实际使用它。 到目前为止,我主要使用了以下非常有用的帖子。 据我所知,现在我需要使用Kitura提供的BodyParser和Router类,但在我看来,在OpenWhisk+Kitura Swift的IBM云函数实现中,这些类很早就得到了处理。。。所以我现在不太确定 有什么想法或建议吗?为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
谢谢好的,我回答了自己的问题,进一步理解了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]
字典