Swift-是否可以解码HTTP响应标头以限制请求?

问题描述

我正在使用JSONDecoder和URL会话从API解码JSON。效果很好

URLSession.shared.dataTask(with: request) { (data,theResponse,error) 

在“ theResponse”(我没有解码)中,最后一个键是“ X-RateLimit-requests-Remaining”:

<NSHTTPURLResponse: 0x6000033ec300> { URL: myUrl } { Status Code: 200,Headers {
    Connection =     (
        "keep-alive"
    );
    "content-encoding" =     (
        gzip
    );
    "Content-Length" =     (
        1913
    );
    "Content-Type" =     (
        "application/json"
    );
    Date =     (
        "Mon,28 Sep 2020 14:34:35 GMT"
    );
    Server =     (
        "RapidAPI-1.2.6"
    );
    "X-RapidAPI-Region" =     (
        "AWS - eu-central-1"
    );
    "X-RapidAPI-Version" =     (
        "1.2.6"
    );
    "X-RateLimit-requests-Limit" =     (
        100
    );
    "X-RateLimit-requests-Remaining" =     (
        68
    );
} }

由于上述不是JSON,是否可以将这些值解码为一种类型,然后将其用于速率限制?

例如,当“ X-RateLimit-requests-Remaining”达到10时,在我的应用中限制请求

谢谢

解决方法

这些已为您解码成[AnyHashable: Any]字典。要获取此特定文件,您需要按照以下方式进行检查:

if let remaining = theResponse.allHeaderFields["X-RateLimit-requests-Remaining"] 
                       as? Int { ... }