Search code examples
swiftyoutube-apialamofireyoutube-data-api

How to separate request body in alamofire?


I use YouTube Live Streaming API.
It required http headers, parameters, request body.

Parameter is required query string format.
Request body is required json format.

In Alamofire is only has paramters, header.
How to separate request body from parameters??

Until now, I use like this.

let params: [String: Any] = [
    "part": "snippet, status", // part is parameter
    "snippet": ["title": "hhzz", // snippet is request body
                "scheduledStartTime": "2018-12-18T13:00:0Z"],
    "status": ["privacyStatus": "public"] // status is request body
]

Alamofire.request(url, method: .post, parameters: params, encoding: URLEncoding.queryString, headers: header).responseJSON { (response) in
    if let response = response.result.value {
        print(response)
    }
}

But, This request is alaways fail. Becuase server recognize reqeust body=nil.
Alamofire request methods no has request body.
Where can I input request body?
or How to I separate request body??


Solution

  • From the Youtube documentation it requires json body, so you need to use JSON Encoding and need to add the url parameters to the request url.

    let url = "https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet,status"
    Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: header).responseJSON { (response) in
        if let response = response.result.value {
            print(response)
        }
    }