Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果操作可以';不能表演吗?_Php_Json_Api_Mobile_Backend - Fatal编程技术网

Php 如果操作可以';不能表演吗?

Php 如果操作可以';不能表演吗?,php,json,api,mobile,backend,Php,Json,Api,Mobile,Backend,我正在用PHP为一个移动应用程序编写API。其中一个端点,create user.php,应用于向用户表添加新记录。如果应用程序正在尝试创建副本,该怎么办?我可以捕捉到这一点并返回一条错误消息(顺便说一下,这是什么?)。问题是,我是否也应该返回一个JSON,其结构如下: { "status": "The email already exists" } …为客户提供更多关于出错原因的信息?或者我应该只使用错误代码,就这样吗?如果您想向用户返回一些东西,我会返回一个简单的错误,就像您在示例中

我正在用PHP为一个移动应用程序编写API。其中一个端点,
create user.php
,应用于向用户表添加新记录。如果应用程序正在尝试创建副本,该怎么办?我可以捕捉到这一点并返回一条错误消息(顺便说一下,这是什么?)。问题是,我是否也应该返回一个JSON,其结构如下:

{
   "status": "The email already exists"
}

…为客户提供更多关于出错原因的信息?或者我应该只使用错误代码,就这样吗?

如果您想向用户返回一些东西,我会返回一个简单的错误,就像您在示例中遇到的一样,然后我还会在服务器上有一个日志文件,我会记录错误、内部异常、日期和时间以及您想要知道的任何其他信息,以便进行调试。这样,如果是简单的重复,用户可以修复问题并继续,但如果他们持续出现错误,您可以查看日志文件以找到真正的问题。

返回http状态422和错误消息

422(不可处理实体)状态代码意味着服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法正确(因此400(坏请求)状态代码不合适),但无法处理包含的指令。例如,如果XML请求体包含格式正确(即语法正确)但语义错误的XML指令,则可能会出现这种错误情况。 页面统计信息

具体地说:

422状态代码感觉更合适。服务器理解您试图做什么;它了解您提交的数据;它只是不让这些数据被处理

阅读Ben Nadel的更多内容:


此外,Laravel框架在其请求表单类中还通过“失败规则”(例如电子邮件已经存在)使用http状态422。请参见:

这可能是优先选择。我会说使用一个错误代码。API应使用适用的响应代码。API可能会在响应正文中包含您想要的任何附加信息。我要补充的一点是,在json中也包含状态代码,例如
{“response_code”:400,“message”:“无法创建用户-电子邮件已经存在”}
,因此如果以后必须在头中抑制http代码(flash client Anywhere),响应仍然可用