我在控制器的代码中使用HTTP状态代码符号,例如:
render json: {
auth_token: user.authentication_token,
user: user
},
status: :created
Run Code Online (Sandbox Code Playgroud)
要么
render json: {
errors: ["Missing parameter."]
},
success: false,
status: :unprocessable_entity
Run Code Online (Sandbox Code Playgroud)
在我的请求规范的代码中我也想使用符号:
post user_session_path, email: @user.email, password: @user.password
expect(last_response.status).to eq(201)
Run Code Online (Sandbox Code Playgroud)
...
expect(last_response.status).to eq(422)
Run Code Online (Sandbox Code Playgroud)
但是,我使用符号而不是整数的每个测试都会失败:
Failure/Error: expect(last_response.status).to eq(:created)
expected: :created
got: 201
(compared using ==)
Run Code Online (Sandbox Code Playgroud)
以下是Rack中最新的HTTP状态代码符号列表.
编写良好的HTTP服务器在获得CORS预检(OPTIONS)请求时应返回什么状态代码?
200,204还是其他什么东西?
如果允许原点(并且将设置相应的标题)或不允许(并且CORS标题不会被设置或与原点不匹配),状态代码是否应该不同?
我读到当用户使用时必须使用"401 Unauthorized"代码:
根据RFC,在两种情况下服务器都必须返回401代码.但我需要在我的ajax请求中区分.
任何人都有提示解决这个问题?
注意:我不想使用403 Forbidden代码,因为在403中"Authorization will not help",根据RFC.
我已经做了很多次(看到很多人这样做了),但我开始怀疑它是否合适:
if @record.save
# status 200
else
# failure of validations => status 422
end
Run Code Online (Sandbox Code Playgroud)
现在我看到这422 unprocessable entity意味着请求格式正确,但在语义上并不正确.据我了解,验证错误可能不是语义错误.
注意:我在谈论唯一性验证,因此我不确定这是否属于用户错误,如此问题:REST API服务为验证失败返回的适当HTTP状态代码是什么?
总结一下:我应该停止使用状态422吗?如果是这样,我应该使用什么呢?
我正在为应用程序实现身份验证,我正在使用带有"身份验证方法"的可插拔系统.这允许我实现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状态代码(和标头)是什么?登录失败时,正确的代码是什么?
注意:我对摘要式身份验证不感兴趣.
我有一个像sales/customers/{customerno}这样的资源.如果客户端向此资源发送PUT请求,则如果实体主体中的xml无效,则返回400 - Bad请求.但是,如果xml有效,但xml的内容无效,该怎么办?比如说客户端正在尝试更新客户PostCode并提供无效的PostCode.返回400是否正确 - 在这种情况下是错误的请求,还是我应该使用的另一个http代码?
xml rest http-status-codes http-status-code-400 restful-architecture
我有一个大型内部企业基于Web的应用程序在IIS6上运行ASP.NET 3.5的情况,生成401"未授权"响应,然后是200"Ok"响应(由Fiddler描述).我知道为什么会发生这种情况(集成auth强制浏览器重新发送凭据)但我正在寻找一些关于如何最小化或根除情况的想法.有问题的应用程序在WAN中运行,一些用户遇到的延迟时间高达250毫秒,因此强制后续请求会对页面加载时间产生明显影响,尤其是当页面上有许多级联下拉列表时.
应用程序的用户是托管桌面环境内部的,因此从部署的角度来看,可以强制浏览器在第一个请求上发送凭据(这是否可能?).这适用于需要用户身份但不需要身份验证的资源(WebResource.axd,ScriptResource.axd和一些自定义Web服务)的页面,允许匿名身份验证.我已经看过在web.config中基于每个位置定义这个,但是结果是混合的(仍然有许多401响应).
对于处理这种情况的"最佳实践",我很感激.有很多资源可以识别问题,但我找不到提供可行解决方案的资源.
谢谢!
编辑:可以通过向Web配置添加位置条目匿名请求不需要身份验证的资源(即用于级联下拉列表的Web服务),但我还没有找到经过身份验证的资源的答案.
我正在使用OkHttp来获取某些网站的内容.
但是,我无法从响应中获取Http-Status Code.
我的Java代码:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://www.google.at")
.build();
Response httpResponse = client.newCall(request).execute();
String html = httpResponse.body().string();
Run Code Online (Sandbox Code Playgroud)
这个方法:
httpResponse.toString();
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
Response{protocol=http/1.1, code=200, message=OK, url=https://www.google.at}
Run Code Online (Sandbox Code Playgroud)
有没有办法将statusCode作为一个整数,或者我是否需要一个正则表达式来过滤掉这个toString()方法?
当服务器与外部API通信时出现问题时,返回的正确HTTP状态代码是什么?
假设客户端向我的服务器A,A发送有效请求,然后查询服务器B的API以执行某些操作.但是B的API目前正在抛出500或者某种程度上无法访问,应该返回客户端的状态代码是什么?5*错误似乎不正确,因为服务器A正常运行,并且4*错误似乎不正确,因为客户端正在向A发送有效请求.
我正在实现一个简单的注册/登录模块.
在测试用户凭据时,我开始考虑哪种HTTP状态代码适用于用户发送带有错误凭据的请求的情况.
起初,我认为401 Unauthorized是一个不错的状态代码,但是当用户试图在未经授权的情况下获取某些资源时,它似乎会更好.
之后,我切换到409冲突
此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.
所以,朋友们,请给我一个建议,应该使用哪个状态代码.