Swift. Можно ли декодировать заголовки ответов HTTP для ограничения запросов?

Я декодирую JSON из API, используя сеанс JSONDecoder и URL. Это отлично работает

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

В ответе (который я не расшифровываю) последним ключом является 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

Спасибо


person kalegreenjj    schedule 28.09.2020    source источник
comment
Что вы имеете в виду, что не декодируете ответ http? Очевидно, вы расшифровали его.   -  person matt    schedule 28.09.2020


Ответы (1)


Они уже расшифрованы для вас в [AnyHashable: Any] словаре. Чтобы получить этот конкретный файл, вы должны проверить его следующим образом:

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