• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何在 Alamofire 中使用 PUT 请求

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:34:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我是 swift 新手,我也在尝试使用 Alamofire 从 API 调用数据。我对如何使用 PUT 请求 来更新数据感到很困惑。我已经在 SO 中阅读了一些解决方案,但我不知道我将如何应用到我的应用程序中。我正在创建一个Event App,场景应该是,当参与者点击Check In按钮时,它会将registered_flag更新为true的意思参与者将被标记为已注册,按钮将更改为 checkout 。我真的不知道我的 API 服务是否正确。希望你能帮助我。非常感谢。

事件参与者的 JSON 中的注册标志应在 checkInOutButton 后更新一次

{
    "event_name": "Q & A",
    "event_participants": [
        {
            "participant_id": "70984656-92bc-4c36-9314-2c741f068523",
            "employee_number": null,
            "last_name": "Surname",
            "first_name": "FirstName",
            "middle_name": null,
            "display_name": "Surname, FirstName ",
            "department_name": "Medical Informatics",
            "position_name": "Application Developer",
            "registered_flag": true,
            "registered_datetime": "2018-09-13T08:54:40.150",
            "registration_type": 1,
            "delete_flag": false,
            "manual_reg_flag": false,
            "out_flag": false,
            "out_datetime": null,
            "classification": 6,
            "others": "Guest"
          }
        }

更新 JSON 以进行签到

{
   "registered_flag": true,
   "registration_type": 1
}

updateType

enum UpdateParticipantType: String {

case checkIn = "Check In"
case checkOut = "Check Out"
}

UpdateParticipant 的 APIService

 func updateParticipant(updateType: UpdateParticipantType,
                       participantID: String,
                       successBlock: @escaping ([Attendee]) -> Void,
                       failureBlock: @escaping (Error) -> Void)

{

   let updateParticipantURL = URL(string: "\(REGISTER_PARTICIPANT_URL)/\(updateType)/\(participantID)")

    Alamofire.request(updateParticipantURL!, method: .put).responseJSON { (response) in
        print(response)

        if let error = response.error
        {
            failureBlock(error)
            print(error)
            return
        }

        if let jsonArray = response.result.value as? [[String : Any]] {
            for anItem in jsonArray {
                if let eventparticipants = anItem["event_participants"] as? [[String : Any]] {
                    var extractedAttendees = [Attendee]()
                    for participants in eventparticipants{
                        let success = Attendee.init(JSON: participants)
                        extractedAttendees.append(success!)
                    }
                    successBlock(extractedAttendees)
                }
            }
        }
    }
}



Best Answer-推荐答案


根据 Alamofire文档:

let parameters: Parameters = [
    "foo": "bar",
    "baz": ["a", 1],
    "qux": [
        "x": 1,
        "y": 2,
        "z": 3
    ]
 ]

Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters)

对于给定的 json

 {
    "registered_flag": true,
    "registration_type": 1
 }

let parameters: Parameters = [
     "registered_flag": true
     "registration_type": 1
 ]

关于ios - 如何在 Alamofire 中使用 PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307722/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap