【发布时间】:2021-08-16 04:11:57
【问题描述】:
我正在为这个 iOS 应用程序使用 WooCommerce REST API。下面你可以看到我的 Alamofire 请求。 storeURL、consumerKey 和 consumerSecret 来自 Realm 数据库,与问题无关。如图所示,我在标头中添加了“Cache-Control”:“no-cache”,并为 Alamofire 请求中的缓存响应添加了 .doNotCache。
我的意图是在我加载列出商店中所有产品的 UIViewController 时接收新的 json 响应。与所示功能类似的附加功能允许我创建和/或删除产品。我遇到的问题是我收到的 json 没有更新。有没有办法清除缓存以便从 API 调用中获取更新的数据?
func getProducts(onSuccess: @escaping(_ products: [Product]) -> Void, onError: @escaping(_ errorMessage: String) -> Void) {
var urlParams: [String : String] = [:]
getParams { params in
urlParams = params
}
guard let storeURL = urlParams["storeURL"] else { return }
guard let consumerKey = urlParams["consumerKey"] else { return }
guard let consumerSecret = urlParams["consumerSecret"] else { return }
let headers: HTTPHeaders = [
"Accept": "application/json",
"Cache-Control": "no-cache"
]
let parameters = [
"consumer_key" : consumerKey,
"consumer_secret" : consumerSecret
]
let url = "https://\(storeURL)/wp-json/wc/v3/products"
AF.request(
url,
parameters: parameters,
headers: headers
).cacheResponse(
using: ResponseCacher(
behavior: .doNotCache
)
)
.responseJSON { response in
switch response.result {
case .success(let result):
let json = JSON(result)
let products = Product.parse(json)
onSuccess(products)
case .failure(let error):
onError(error.localizedDescription)
}
debugPrint(response)
}
}
【问题讨论】:
标签: swift api rest alamofire cache-control