Alamofire: μƒνƒœ μ½”λ“œ: 404, ν•˜μ§€λ§Œ response.result = SUCCESS

에 λ§Œλ“  2015λ…„ 10μ›” 27일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: Alamofire/Alamofire

1

response serializer support

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

응닡 μƒνƒœ μ½”λ“œμ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 404μ—μ„œ .Success 사둀λ₯Ό λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. responseData 직렬 λ³€ν™˜κΈ°κ°€ ν•˜λŠ” λͺ¨λ“  일은 였λ₯˜κ°€ μ—†μ—ˆλŠ”μ§€(응닡 μƒνƒœ μ½”λ“œμ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ) λ˜λŠ” 데이터가 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

κ·€ν•˜μ˜ 경우 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” 404λ₯Ό μˆ˜μ‹ ν•˜κ³  μ„œλ²„κ°€ 데이터λ₯Ό λ°˜ν™˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ responseData 직렬 λ³€ν™˜κΈ°κ°€ μ„±κ³΅ν•©λ‹ˆλ‹€. 404μ—μ„œ 항상 였λ₯˜κ°€ λ°œμƒν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” 경우 responseData 직렬 λ³€ν™˜κΈ° 전에 .validate(statusCode: [200]) λ©”μ„œλ“œλ₯Ό μΆ”κ°€λ‘œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. README의 검증 μ„Ήμ…˜ μ—μ„œ 더 λ§Žμ€ 정보λ₯Ό μ–»μœΌμ‹­μ‹œμ˜€.

μ•žμœΌλ‘œ 이와 같은 μ§ˆλ¬Έμ€ alamofire νƒœκ·Έκ°€ μžˆλŠ” μŠ€νƒ μ˜€λ²„ν”Œλ‘œμ— 더 μ ν•©ν•©λ‹ˆλ‹€. 버그 및 κΈ°λŠ₯ μš”μ²­μ— GitHubλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 🍻


κΈ°μ—¬ κ°€μ΄λ“œλΌμΈ μ—μ„œ

μ§ˆλ¬Έν•˜κΈ°

GitHubλ₯Ό 지원 포럼으둜 μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ μžμ²΄μ™€ 관련이 μ—†λŠ” μ‚¬μš© κ΄€λ ¨ μ§ˆλ¬Έμ€ λŒ€μ‹  μŠ€νƒ μ˜€λ²„ν”Œ λ‘œμ— λ¬Έμ˜ν•˜μ„Έμš”. κ·Έλ ‡κ²Œ ν•˜λ©΄ 문제λ₯Ό 더 빨리 ν•΄κ²°ν•  수 있고 λ™μΌν•œ μ§ˆλ¬Έμ„ 가진 λ‹€λ₯Έ μ‚¬λžŒμ΄ 닡을 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μœ μ§€ κ΄€λ¦¬μžλŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ„ μœ„ν•΄ ν”„λ‘œμ νŠΈλ₯Ό κ°œμ„ ν•˜λŠ” 데 집쀑할 수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

응닡 μƒνƒœ μ½”λ“œμ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 404μ—μ„œ .Success 사둀λ₯Ό λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. responseData 직렬 λ³€ν™˜κΈ°κ°€ ν•˜λŠ” λͺ¨λ“  일은 였λ₯˜κ°€ μ—†μ—ˆλŠ”μ§€(응닡 μƒνƒœ μ½”λ“œμ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ) λ˜λŠ” 데이터가 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

κ·€ν•˜μ˜ 경우 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” 404λ₯Ό μˆ˜μ‹ ν•˜κ³  μ„œλ²„κ°€ 데이터λ₯Ό λ°˜ν™˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ responseData 직렬 λ³€ν™˜κΈ°κ°€ μ„±κ³΅ν•©λ‹ˆλ‹€. 404μ—μ„œ 항상 였λ₯˜κ°€ λ°œμƒν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” 경우 responseData 직렬 λ³€ν™˜κΈ° 전에 .validate(statusCode: [200]) λ©”μ„œλ“œλ₯Ό μΆ”κ°€λ‘œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. README의 검증 μ„Ήμ…˜ μ—μ„œ 더 λ§Žμ€ 정보λ₯Ό μ–»μœΌμ‹­μ‹œμ˜€.

μ•žμœΌλ‘œ 이와 같은 μ§ˆλ¬Έμ€ alamofire νƒœκ·Έκ°€ μžˆλŠ” μŠ€νƒ μ˜€λ²„ν”Œλ‘œμ— 더 μ ν•©ν•©λ‹ˆλ‹€. 버그 및 κΈ°λŠ₯ μš”μ²­μ— GitHubλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 🍻


κΈ°μ—¬ κ°€μ΄λ“œλΌμΈ μ—μ„œ

μ§ˆλ¬Έν•˜κΈ°

GitHubλ₯Ό 지원 포럼으둜 μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ μžμ²΄μ™€ 관련이 μ—†λŠ” μ‚¬μš© κ΄€λ ¨ μ§ˆλ¬Έμ€ λŒ€μ‹  μŠ€νƒ μ˜€λ²„ν”Œ λ‘œμ— λ¬Έμ˜ν•˜μ„Έμš”. κ·Έλ ‡κ²Œ ν•˜λ©΄ 문제λ₯Ό 더 빨리 ν•΄κ²°ν•  수 있고 λ™μΌν•œ μ§ˆλ¬Έμ„ 가진 λ‹€λ₯Έ μ‚¬λžŒμ΄ 닡을 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μœ μ§€ κ΄€λ¦¬μžλŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ„ μœ„ν•΄ ν”„λ‘œμ νŠΈλ₯Ό κ°œμ„ ν•˜λŠ” 데 집쀑할 수 μžˆμŠ΅λ‹ˆλ‹€.

정말 κ°μ‚¬ν•©λ‹ˆλ‹€

이 문제둜 어렀움을 κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€... 정말 κ°μ‚¬ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰