1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Swift】Alamofire, MoyaのURLEncodingで、Boolが0,1になってしまうことへの対応

Posted at

事象: 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 が便利

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?