4
2

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 1 year has passed since last update.

Arsaga App Division 2021🎅🏻Advent Calendar 2021

Day 17

【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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?