[Swift]POSTでAPIを叩く

swift

GETでAPIを叩くのは別記事で紹介した。

次はPOSTメソッドでAPIを叩きたいと思う。

実装するにあたって、疑問に思っていたことは以下。

  • どうやってhttpメソッドをPOSTにするのか
  • リクエストに値をどのように含めるか

SwiftでGETメソッドをリクエストで送る時に、特に何を書かなくてもメソッドがデフォルトでGETになる。

ふと、「じゃあ、POSTの時はどのようにすれば?」と感じた。

URLRequestのプロパティ、httpMethod = “POST”を指定する。

次にリクエストに値をどのように含めるのか?という点。

具体的には、httpBodyプロパティに含めればOK。

コードは以下の通り。

func loginAPI() {
    print("login api")
    let url = URL(string: "http://127.0.0.1:8000/api-auth/login/")!
    var request = URLRequest(url: url)
    request.httpMethod = "POST" // POSTリクエスト
    request.httpBody = "username=hoge&password=hoge123".data(using: .utf8) // Bodyに情報を含める
    URLSession.shared.dataTask(with: request, completionHandler: {(data, response, error) in
        print("data: \(String(describing: data))")
        print("response: \(String(describing: response))")
        print("error: \(String(describing: error))")
        print("------------------------------------")
        do{
            let responseData = try JSONSerialization.jsonObject(with: data!, options: [])
            print(responseData)
            }
            catch {
                print(error)
            }
    }).resume()
}

上記コードではusernameとpasswordを含めて認証を行なっている。叩いているAPIはローカルのDRF。

 

参考:

https://www.office-matsunaga.biz/ios/description.php?id=54

https://qiita.com/shungo_m/items/64564fd822a7558ac7b1



カテゴリー