首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >`POST`验证失败的示例Content-Type?

`POST`验证失败的示例Content-Type?
EN

Stack Overflow用户
提问于 2012-04-23 22:28:03
回答 1查看 364关注 0票数 1

假设HTTP服务器使用400响应代码响应POST,因为该请求未通过验证(例如,未找到电子邮件地址)。如果服务器希望向客户端提供有关错误性质的更多信息,则应如何返回此信息?对于请求中使用的每个可能的内容类型,理想情况下是否应该有一个关联的“错误”内容类型?

例如,给定请求

代码语言:javascript
运行
复制
POST /users
Content-Type: application/x-myuser

{
    "email": "foo@example.com",
    "name": "Michael"
}

响应可能是

代码语言:javascript
运行
复制
400 Bad Request
Content-Type: application/x-myuser-error

{
    "email": "Email address foo@example.com not found"
}

有没有公开提供的“错误”内容类型的好例子?

EN

回答 1

Stack Overflow用户

发布于 2012-04-23 22:37:08

我没有任何例子,但最好记住这些:

  • 总是包含一个机器可读的错误,并尽可能地泛化。像这样的JSON结构

{"error":"Email address not found!","code":"fielderror","field":"email","reason":"notfound"} (可以简化为{"error":"...","code":"emailnotfound"})

允许API开发人员正确地向用户显示错误(并对错误采取行动),同时允许您在不破坏应用程序的情况下更改消息。

  • 一种不同的方法是不返回任何正文,并使用HTTP头来告诉用户代理哪里出了问题。例如,您可以使用X-ErrorX-Error-Code来显示人类可读的错误和机器可读的代码。

  • 创建过多的内容类型可能是一件坏事。我个人更喜欢总是使用HTTP码,并通过查看HTTP码让用户代理知道状态: 200,400,403,404,500,etc.

  • Definitely永远不会开始组合application/json码和内容类型。你不想让你的用户知道application/myapp/error意味着有错误,除非它是200,在这种情况下你在编辑屏幕上,或者当它是302时,它实际上不是一个错误,而是一个重定向。这就是为什么你应该坚持使用一种内容类型。

底线:始终保持简单。确保在检测状态时必须查看one字段,而不是两个或三个。一旦用户代理确定了状态,它就可以选择查看其他一些字段以获取额外信息,但前提是它确定出现了错误。包括单独的内容类型可能对此没有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10282520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档