LoginSignup
4
2

More than 1 year has passed since last update.

【SwiftUI】AlamofireをMoyaっぽく使う

Last updated at Posted at 2021-12-16

Swift4時代からMoyaを使っていて、バージョンアップで昔と書き方が変わっているのは知っていましたがSwiftUIで久しぶりにAlamofireを使ってみました。

ベターな使い方か分かりませんが、使いながらMoyaっぽく書きたいなーと思ったのでそれっぽく書いてみました。

自分でWrapperを作ろうとしたり色々調べてみましたが、結局gitに書いてあるやり方で出来そうな感じでした。

やり方はドキュメントにあるURLRequestConvertibleを使用します。

enum Router: URLRequestConvertible {
    case get, post

    var baseURL: URL {
        return URL(string: "https://httpbin.org")!
    }

    var method: HTTPMethod {
        switch self {
        case .get: return .get
        case .post: return .post
        }
    }

    var path: String {
        switch self {
        case .get: return "get"
        case .post: return "post"
        }
    }

    func asURLRequest() throws -> URLRequest {
        let url = baseURL.appendingPathComponent(path)
        var request = URLRequest(url: url)
        request.method = method

        return request
    }
}

AF.request(Router.get)

公式のAdvancedUsageのドキュメントではこのようにgetやpostで分岐させていますが、単純にこれを任意のエンドポイントごとに定義することでMoyaでやっていたようなやり方で運用できます。

enum Router: URLRequestConvertible {
    case hoge 
        case fuga

    var method: HTTPMethod {
        switch self {
        case .hoge: return .get
        case .fuga: return .post
        }
    }

~以下省略~
4
2
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
4
2