事象: Moyaを使ってAPIをリクエストしたが、Boolが0/1で送られていた
API系のライブラリとしてよく用いられるのが、 Moya というライブラリだと思います。
私自身も99%のプロジェクトでMoyaを使っています。
Moyaでリクエストパラメータを送る際に以下の形式で送っています。
requestParameters(parameters: [String : Any], encoding: Moya.ParameterEncoding)
しかしながら、この形式で送ると、Bool型が一度Any型に変換され、そして、最終的にNSNumberとしてリクエストされるようです。
詳しくは こちら
とはいえ、↑この人が言うように、BoolをAnyにすると、NSNumberになる的な事象は、playground上では確認できませんでした。。
対応: Bool.description で、Bool型をString型に変更して対応
Bool型→Any型: NSNumber (0/1)
Bool型→String型→Any型: Bool (true/false)
↑のようになるようです。
元々のコード
var parameters: [String: Any]? {
return ["key" : boolParam]
}
↓↓↓↓↓↓↓↓↓
修正後のコード
var parameters: [String: Any]? {
return ["key" : boolParam.description]
}
その他
パケットキャプチャで確認しましたが、こちら↓とても参考になりました。
通信系のデバッグには Charles が便利