iOS SDK - 네트워크 인터셉트
네트워크 인터셉트
Section titled 네트워크 인터셉트ORTracker는 태스크와 요청을 모두 받을 수 있는 NetworkListener를 제공합니다. 사용 방법은 다음과 같습니다.
import ORTracker
func fetchPokemonData(for name: String) {
let networkListener = NetworkListener()
let url = URL(string: "https://pokeapi.co/api/v2/pokemon/ditto")!
var request = URLRequest(url: url)
request.httpMethod = "GET" // This is the default, so it's optional in this case.
// Start the network listener with the request
networkListener.start(request: request)
// Create a data task
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print("Error deserializing JSON: \(error)")
}
}
networkListener.finish(response: response, data: data)
}
task.resume()
}
요청 정제
Section titled 요청 정제요청/응답 데이터를 자동으로 제거하기 위해 두 가지 키가 제공됩니다. 본문에는 ignoredKeys, 헤더에는 ignoredHeaders를 사용합니다. 요청과 응답 모두 정제되지만, 본문은 유효한 JSON인 경우에만 영향을 받습니다.
정제할 문자열 목록을 지정하기만 하면 됩니다.
let networkListener = NetworkListener()
networkListener.ignoredHeaders = ["mySecretToken"]
networkListener.ignoredKeys = ["password"]
리스너에 전달하기 전에 응답 데이터를 변경할 수도 있습니다.
// ... request
var sanitizedData
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
sanitizedData = customSanitizeFunction(data)
print(json)
} catch {
print("Error deserializing JSON: \(error)")
}
}
networkListener.finish(response: response, data: sanitizedData)
질문이 있으신가요?
Section titled 질문이 있으신가요?이 과정에 대해 궁금한 점이 있으면 언제든지 Slack으로 문의해 주세요.