URLReqeust
のHttpMethodは、なぜかenum
ではなくString
で設定する仕様になっている。
なんか気持ち悪いので extension
作りました
Before
POSTリクエストを作りたい場合、こうやって記述する。
let url = URL(string: "https://hoge.com")!
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "POST"
なぜこんな仕様にした・・・?
いざextension
URLRequest
をextensionしてenumHttpMethod
とメソッドhttpMethod
を定義する
import Foundation
extension URLRequest {
enum HttpMethod: String {
case GET
case POST
case PATCH
case PUT
case DELETE
}
mutating func httpMethod(_ method: HttpMethod) {
httpMethod = method.rawValue
}
}
After
let url = URL(string: "https://hoge.com")!
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod(.POST)
あとがき
これで気持ちよくPOSTできるね