[iOS Dev] Request RESTFul API with AFNetworking (Code Explanation)
** มองไม่เห็น Code ให้คลิกที่ภาพเพื่อ Link ไปหาภาพต้นฉบับนะครับ :)
สร้างตัวแปรเพื่อเก็บ id ของ Row สุดท้าย เดี๋ยวเราจะใช้มันใน DELETE, PUT Request
GET Request
การทำงานคือ เราจะขอข้อมูลทั้งหมดจาก DB
โดย Code ก็ไม่มีอะไรมาก สำหรับ GET แค่สร้าง NSURLRequest มาแล้วเขียน AFJSONRequestOperation ให้ทำการติดต่อไปที่ URL ที่เราเขียนไว้ จากนั้นก็ Implement Success และ Failure Blocks เพื่อบอกว่าจะทำอะไรเมื่อ Request สำเร็จ และไม่สำเร็จ
จะเห็นว่ามีการอ้างอิงค่าของตัวแปรที่เก็บ id ของ Row สุดท้ายอยู่ที่นี่ด้วย
DELETE Request
ขออธิบาย Delete ก่อน เพราะตัว Code จะนำไปสู่การเข้าใจ POST และ PUT
โดยตัว AFJSONRequestOperation เนี่ยโดย Default มันจะทำ GET Request ให้เรา
แต่ถ้าเราอยากใช้ method อื่น เราต้องใช้ AFHTTPClient เข้ามาช่วยเพื่อทำการผนวก URL ของเราให้ถูกต้อง ดังนั้นเราก็แค่ตั้ง baseURL ไว้แล้วจากนั้นก็ใช้ method ของ AFHTTPClient ช่วยสร้าง URL ตามเสปคที่เราต้องการ แล้วค่อยใช้ AFJSONRequestOperation ทำการ Call API ที่เหลือก็เหมือน GET
POST and PUT Request
เมื่อเราเข้าใจด้านบนแล้ว การ POST และ PUT ก็ง่ายเลย เพียงแค่เราเปลี่ยน method ที่เราจะ Request ผ่าน AFHTTPClient แล้วใส่ POST, PUT parameters ต่อท้าย URL เข้าไปด้วย ... โดยที่อย่าลืม Set Parameter Encoding ด้วย เพราะการใส่ parameters สามารถทำได้หลายแบบ โดย parameters ที่ใช้จะเขียนอยู่ในรูปของ NSDictionary โดย key ของแต่ละ object คือ NSString -> tableName[fieldName]
จะเห็นว่าใน Success Blocks ของ DELETE, POST, PUT Request ผมได้ทำการเรียก GET Request นั่นก็เพราะต้องการแสดงข้อมูลทั้งที่ถูกเปลี่ยนแปลงจากการใช้ method ใดๆ บน UITextView เพราะ method อื่นๆ ที่ไม่ใช่ GET นั้นจะโยน JSON กลับมาไม่เหมือนกัน เช่น DELETE จะไม่โยนอะไรกลับมาเลย, POST และ PUT จะโยนเพียง Row ที่สร้าง และ Row ที่ทำการ Update กลับมาให้
Comments
Post a Comment