我有一个网站,全部用 PHP 编码(以及 HTML、JavaScript、SQL 等)。我目前正在为这个网站制作一个 iPhone 应用程序,为了访问我需要的不同 SQL 数据,我正在构建一种 API。到现在为止,我只需要非常简单的数据,所以通过一个查询,一个 if/else,我就会得到我的数据,我只是用 JSON 来回应它。一切都很简单。
但我现在想为网站的注册部分制作 API。在页面上,我会收到来自 iPhone 应用程序的数据(用户名、密码、电子邮件等),我必须检查用户名是否尚未使用,密码是否有效且匹配,电子邮件是否有效有效且尚未使用等。如果其中一个条件不匹配,我显然必须告诉应用程序哪里出了问题。如果一切正常,我就会注册,然后告诉应用程序我已经完成了。
但是我对 jSON/API 的概念不是很熟悉,也不知道正确的做法是什么。你如何处理 jSON 等中的多个响应。这个问题听起来很基本,但这正是我所在的地方。 我的意思是,我会做这样的事情:
if ($_POST['pass'] == $_POST['pass_confirm']) {
if(!isValidPassword($_POST['pass'])){
echo '{"success":0,"error_message":"Password invalid"}';
}else{
全程。但这给了我一个巨大的屁股代码,可以很明显地简化它,因为相同的元素一次又一次地重复。但我无法理解它。那么,我该如何简化验证注册和发回 JSON 数据的整个过程。
谢谢。
最佳答案
这是我的建议。只输出一次 JSON。将输出包装在函数调用中,例如 function showOutput($success, $message) {}
。设置条件,以便测试错误而不是成功,即:
if($pass !== $pass_confirm) {
showOutput(false, 'Passwords don\'t match');
return;
}
// Here I know I'm still on a successful track
这也称为 guard clauses并将帮助您避免实现 arrow anti-pattern如果增加额外的要求,您可能已经遭受或将来可能发展的痛苦。将其与您当前的方法进行对比:
if($pass === $pass_confirm) {
if($someotherCondition) {
if($managerBobsCondition) {
// success!
}
}
}
该代码可以重构为如下所示:
if($pass !== $pass_confirm) {
// error!
}
if(!$someotherCondition) {
// error!
}
if(!$managerBobsCondition) {
// error!
}
// success!
这样更清晰/更易于阅读。添加额外的要求也更加简单,因为您没有复杂的逻辑树,您需要对它进行排序以找出您需要放置新的 else if
条件的确切位置!
关于php - 使用 JSON 和 PHP 创建注册 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142561/