-
[Swift] GitHub : Rate Limit Exceeded 해결하기Swift 2022. 11. 22. 06:02
프로젝트에서 깃헙에 요청 보내서 유저의 팔로워 정보를 받는 걸 하고 싶다
하지만 1시간에 60번의 요청만 보낼 수 있단다
그래서 토큰을 넣어서 요청을 보내줘야한다
토큰 발급 받는 방법 👇
settings 클릭
Developer settings 클릭
fine-grained tokens 클릭
Followers 에서 read-only 클릭
이후에는 발급 받고 발급 받은 토큰 키값 잘 저장해두자
프로젝트 코드 👇
class NetworkManager { static let shared = NetworkManager() let baseURL = "https://api.github.com/users/" private init() {} func getFollowers(for username: String, page: Int, completion: @escaping (Result<[Follower], GFError>) -> Void) { let username = 깃헙토큰발급받은아이디 let token = 깃헙에서받은토큰값 let loginString = String(format: "%@:%@", username, token) let loginData = loginString.data(using: String.Encoding.utf8)! let base64LoginString = loginData.base64EncodedString() let endpoint = baseURL + "\(username)/followers?per_page=100&page=\(page)" guard let url = URL(string: endpoint) else { completion(.failure(.invalidUsername)) return } var request = URLRequest(url: url) request.addValue(base64LoginString, forHTTPHeaderField: "Authorization") let task = URLSession.shared.dataTask(with: request) { data, response, error in if let _ = error { completion(.failure(.unableToComplete)) } guard let response = response as? HTTPURLResponse, response.statusCode == 200 else { completion(.failure(.invalidResponse)) return } guard let data = data else { completion(.failure(.invalidData)) return } do { let decoder = JSONDecoder() decoder.keyDecodingStrategy = .convertFromSnakeCase let followers = try decoder.decode([Follower].self, from: data) completion(.success(followers)) } catch { completion(.failure(.invalidData)) } } task.resume() } }
'Swift' 카테고리의 다른 글
[Swift] 이중 클로저 (Nested Closure) 안에서 이중으로 [weak self] 해줘야 할까? (0) 2022.12.04 [Swift] NSCache 써보기 (0) 2022.11.22 [Swift] Enum - Associated Values and Raw Values (0) 2022.11.21 [Swift] removeAll(where:) 써보기 (0) 2022.11.16 [Swift] async await 쓰는 법 (0) 2022.11.15