如何将验证错误从php返回或迅速成功返回

时间:2018-11-19 11:26:05

标签: php swift alamofire

我正在使用alamofire将数据发布到php脚本,该脚本会将数据插入mysql数据库。这部分工作正常,但是我在服务器上进行了一些验证,例如检查有效的电子邮件地址。因此,这是快速代码:

    Alamofire.request(url!, method: .post, parameters: parameters)
        .validate(statusCode: 200..<300)
        .responseJSON { response in
            switch response.result {
            case .success:
                print(response)
            case .failure(let error):
                print(error)
            }
    }

这是处理插入的php。

    if($booking->create($conn)) {

        $response['status'] = "200";
        $response['message'] = "Success";

    } else {

        $response['status'] = "400";
        $response['message'] = $booking->errors;
    }

    echo json_encode($response);

迅速,控制台中验证失败的响应是:

SUCCESS: {
    message =     (
        "Invalid email address",
        "Contact number required"
    );
    status = 400;
}

如果没有错误,我实际上想选择另一个视图控制器,如果有错误,我可能想在标签中显示它们。

但是,最初,我只是想说是否有任何错误,将其打印出来,如果没有错误,则进行查找。但是,如果我尝试将if语句放入响应中,则会出现错误。

 case .success:
    if response == "200" {
    // segue
 }
  

二进制运算符'=='不能应用于类型的操作数   'DataResponse'和'String'

1 个答案:

答案 0 :(得分:0)

我希望有人能向我展示一种更好的方法,但是我已经取得了一些进展,并且正在工作。我对Alamofire文档的理解是,如果您收到响应,则意味着无论服务器发送回什么内容,响应始终为200。因此,我可以解决的唯一方法是使用可编码将响应解析为json,然后根据该数据执行某些操作,例如:

        Alamofire.request(url!, method: .post, parameters: parameters)
            .responseJSON { response in
                let data = response.data
                let jsonDecoder = JSONDecoder()


                do {

                    let serverResponse = try jsonDecoder.decode(PhpResponse.self, from: data!)
                    if serverResponse.status == "200" {

                        print("Success")

                    } else {

                        print(serverResponse.message)
                    }

                } catch {

                    debugPrint(error.localizedDescription)

                }
        }

因此,我将数据从swift发布到服务器,使用php进行某种形式的验证,然后使用php的json_encode,我将其以json格式发送回swift,然后根据该响应进行操作。