【问题标题】:Sending form-data / application/x-www-form-urlencoded body for OpenWhisk/Kitura Swift HTTP POST Request为 OpenWhisk/Kitura Swift HTTP POST 请求发送 form-data / application/x-www-form-urlencoded 正文
【发布时间】:2018-01-17 01:27:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift ibm-cloud openwhisk kitura


    【解决方案1】:

    您可以使用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] 字典。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-19
        • 2014-03-30
        • 2018-07-21
        • 1970-01-01
        • 1970-01-01
        • 2019-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多