Alamofire: 204 ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด alamofire๊ฐ€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 06์›” 07์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Alamofire/Alamofire

204(๋‚ด์šฉ ์—†์Œ)๊ฐ€ ์ƒํƒœ ์ฝ”๋“œ๋กœ ๋ฐ˜ํ™˜๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด Alamofire๋Š” ๋Œ€์‹  ์ด๋ฅผ ์˜ค๋ฅ˜๋กœ ์œ ์ถ”ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ดˆ๊ณผ๋œ ์š”์ฒญ๊ณผ ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(Alamofire์˜ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•)

alamofireManager.request(request)
        .validate(statusCode: 200..<400)
        .responseJSON(options: .AllowFragments) { (response: Response<AnyObject, NSError>) in
                handleAlamofireResponse(response)
         }
question response serializer

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๋ด @borek2 ๋‹น์‹ ์€ ๋‹น์‹ ์˜ API๊ฐ€ ์ฝ˜ํ…์ธ  ๊ธธ์ด ํ—ค๋” ๊ฐ•ํŒ์„ ๋ณด๋‚ด์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  0, ๋‚˜๋Š” 3 ์ผ ๋™์•ˆ ํŒŒ๊ณ  ๋‚œ ํ›„์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ
์‹ค์ œ ๋ฌธ์ œ๋Š” ๋‚ด API๊ฐ€ ๊ฐ’ ๊ฐ•ํŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜ํ…์ธ  ๊ธธ์ด ํ—ค๋”๋ฅผ ๋ณด๋‚ธ ๋‹ค์Œ ์‘๋‹ต์œผ๋กœ 0์„ ๋ณด๋‚ด์„œ Alamofire๊ฐ€ ์ฝ˜ํ…์ธ  ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ทธ๋Š” ์ฝ˜ํ…์ธ  ๊ธธ์ด ๊ฐ•ํŒ์ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  0์ด๋ฏ€๋กœ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์•ผ Alamofire๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  Alamofire๊ฐ€ ์‘๋‹ต์„ ์ฝ์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…
์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 204์ผ ๋•Œ api๊ฐ€ ์ฝ˜ํ…์ธ  ๊ธธ์ด ํ—ค๋” ๊ฐ’ grater๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

@cnoon ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Alamofire๊ฐ€ 204 ์š”์ฒญ ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง๋„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” 204์— ์‘๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 204 ์ฝ˜ํ…์ธ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค

๊ฑด๋ฐฐ. ๐Ÿป

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @borek2 ์ž…๋‹ˆ๋‹ค .

๋ฐฉ๊ธˆ ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

func testDeleteWith204ResponseStatusCode() {
    let expectation = expectationWithDescription("204 should succeed")

    Alamofire.request(.DELETE, "https://httpbin.org/status/204")
        .validate(statusCode: 200..<400)
        .responseJSON(options: .AllowFragments) { response in
            print(response.response)
            print(response)
            expectation.fulfill()
        }

    waitForExpectationsWithTimeout(timeout, handler: nil)

    print("Yay...204 works as expected with responseJSON serializer")
}

์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ณด๊ณ  ์žˆ๋Š” ๋™์ž‘์„ ๋ณต์ œํ•˜๋Š” ๋‹ค๋ฅธ ์˜ˆ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. responseJSON ์ง๋ ฌ ๋ณ€ํ™˜๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ .Success ์ผ€์ด์Šค๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก ํ•˜๋Š” JSON ์ง๋ ฌ ๋ณ€ํ™˜๊ธฐ ์— ์‚ฌ์šฉ์ž ์ง€์ • 204 ์ฒ˜๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Alamofire์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๊ธฐ๊บผ์ด ๋‹ค์‹œ ๋ฌธ์„ ์—ด๊ณ  ์ถ”๊ฐ€ ์กฐ์‚ฌ๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ. ๐Ÿป

์ด๋ด @borek2 ๋‹น์‹ ์€ ๋‹น์‹ ์˜ API๊ฐ€ ์ฝ˜ํ…์ธ  ๊ธธ์ด ํ—ค๋” ๊ฐ•ํŒ์„ ๋ณด๋‚ด์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  0, ๋‚˜๋Š” 3 ์ผ ๋™์•ˆ ํŒŒ๊ณ  ๋‚œ ํ›„์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ
์‹ค์ œ ๋ฌธ์ œ๋Š” ๋‚ด API๊ฐ€ ๊ฐ’ ๊ฐ•ํŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜ํ…์ธ  ๊ธธ์ด ํ—ค๋”๋ฅผ ๋ณด๋‚ธ ๋‹ค์Œ ์‘๋‹ต์œผ๋กœ 0์„ ๋ณด๋‚ด์„œ Alamofire๊ฐ€ ์ฝ˜ํ…์ธ  ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ทธ๋Š” ์ฝ˜ํ…์ธ  ๊ธธ์ด ๊ฐ•ํŒ์ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  0์ด๋ฏ€๋กœ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์•ผ Alamofire๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  Alamofire๊ฐ€ ์‘๋‹ต์„ ์ฝ์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…
์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 204์ผ ๋•Œ api๊ฐ€ ์ฝ˜ํ…์ธ  ๊ธธ์ด ํ—ค๋” ๊ฐ’ grater๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

@cnoon ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Alamofire๊ฐ€ 204 ์š”์ฒญ ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง๋„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” 204์— ์‘๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 204 ์ฝ˜ํ…์ธ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค

๊ฑด๋ฐฐ. ๐Ÿป

@indrajitsinh ์ œ์•ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! alamofire ์—…๋ฐ์ดํŠธ ํ›„ ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ ๋‹ค์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ๊ธฐ์–ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ต์žฅํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰