对于存在的网页,但对于没有足够权限的用户(他们未登录或不属于正确的用户组),要提供的正确HTTP响应是什么?401?403?别的什么?到目前为止,我对每个人的看法都不太清楚.哪些用例适合每个响应?
http-status-codes http-response-codes http-headers http-status-code-403 http-status-code-401
例如,您运行GET请求users/9但没有id为#9的用户.哪个是最好的响应代码?
难道要考虑好的做法,以重新使用RFC HTTP状态代码这个样子,或者我们应该组成新的恰好映射到我们具体的错误原因是什么?
我们正在围绕几个遗留应用程序设计一个Web服务API.
除了响应主体中的JSON/XML数据结构之外,我们还希望返回对Web缓存和开发人员有意义的HTTP状态代码.
但是,如何将不同类别的错误映射到适当的HTTP状态代码?团队中的每个人都同意以下内容:
如果1234不存在,则GET/package/1234返回404 Not Found
如果"next_checkpoint" 和 1234有效请求,则GET/package/1234/next_checkpoint返回400 Bad Request,但next_checkpont在这里没有意义......
等等......但是,在某些情况下,事情需要比"400"更具体 - 例如:
POST/dispatch /?for_package = 1234返回412 Precondition如果/ dispatch和package 1234都存在则失败,但是1234尚未准备好进行调度.
我正在为应用程序实现身份验证,我正在使用带有"身份验证方法"的可插拔系统.这允许我实现HTTP Basic和基于HTML的身份验证.
使用HTTP Basic/Digest auth,服务器发送401 Unauthorized响应头.但是,根据HTTP/1.1 RFC:
响应必须包含WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的质询.
由于我不知道任何"html"WWW-Authenticate标头,因此发送401带有HTML登录表单的内容似乎不合适.有没有替代方案?我想以RESTful方式设计我的应用程序.
基于HTML的登录表单的正确HTTP状态代码(和标头)是什么?登录失败时,正确的代码是什么?
注意:我对摘要式身份验证不感兴趣.
使用PUT方法更新资源时返回的最合适的响应代码是什么,请求包含一些会使域规则无效的数据?
例如,客户资源必须指定名称.如果代理尝试在不提供名称的情况下发出PUT,我不想更新资源,并且我想告诉调用者他们需要提供名称.
什么HTTP响应代码?
我们正在实现基于 REST 的 Web 服务,并且对某些用例有一些疑问。
考虑有一个唯一的帐户,其中包含一些信息(例如添加到购物车信息)
应使用什么 HTTP 状态代码?
我正在尝试用我正在研究的"类似休息"的API来弄清楚在不同情况下返回的正确状态代码.
这个例子借鉴了另一个关于正文中语法类型问题的问题,但我的问题始终假设有效的语法.
假设我有一个端点允许以JSON格式进行POST'ing购买.它看起来像这样:
{
"account_number": 45645511,
"upc": "00490000486",
"price": 1.00,
"tax": 0.08
}
Run Code Online (Sandbox Code Playgroud)
什么是适当的状态代码,如果:
这些都是严格的业务层问题,阻止"处理"发生,但是,一个场景涉及GET中的某些内容将是404.
请注意,帐号不在URL中,因此404会误导?
我们正在开发一个允许用户在休息端点上传文件的应用程序.
如果以下验证方案失败发送400错误代码,请指导是否正确:
1) The Length of file name exceeds permissible limit.
2) File name contains special characters
3) Uploaded file was empty
4) The System failed to read the uploaded file from disk.
Run Code Online (Sandbox Code Playgroud)
此致,塔伦
这是我第一次在laravel中使用验证.我试图在下面的json对象上应用验证规则.json对象名称是有效负载,下面给出了示例.
payload = {
"name": "jason123",
"email": "email@xyz.com",
"password": "password",
"gender": "male",
"age": 21,
"mobile_number": "0322 8075833",
"company_name": "xyz",
"verification_status": 0,
"image_url": "image.png",
"address": "main address",
"lattitude": 0,
"longitude": 0,
"message": "my message",
"profession_id": 1,
"designation_id": 1,
"skills": [
{
"id": 1,
"custom" : "new custom1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
验证码如下所示,出于测试目的,我将名称验证为数字.当我执行下面的代码时,上面的json对象被批准并插入到我的数据库中.相反,它应该给我一个例外,因为我传递名称与字母数字值,我做错了什么:
public function store(Request $request)
{
$this->validate($request, [
'name' => 'digits',
'age' => 'digits',
]);
}
Run Code Online (Sandbox Code Playgroud) rest ×7
http ×3
web-services ×2
api ×1
api-design ×1
http-headers ×1
httpresponse ×1
java ×1
json ×1
laravel ×1
laravel-5.4 ×1
php ×1
symfony ×1
validation ×1