当前位置: 首页 > 面试题库 >

使用HTTP状态代码来反映Web服务请求的成功/失败吗?

袁文景
2023-03-14
问题内容

我正在实现一个返回JSON编码的有效负载的Web服务。如果服务调用失败(例如,由于参数无效),则返回JSON编码的错误。但是,我不确定在这种情况下应返回什么HTTP状态代码。

一方面,似乎HTTP状态代码用于HTTP:即使返回了应用程序错误,HTTP传输 本身 还是成功的,表明响应为 200 OK

另一方面,RESTful方法似乎建议如果调用者试图发布到资源,并且请求的JSON参数某种程度上无效,则认为 400 Bad Request
是适当的。

我在客户端使用Prototype,它具有一种很好的机制,可以根据HTTP状态代码( onSuccessonFailure
)自动调度到不同的回调,因此,我很想使用状态代码来指示服务成功或失败,但是我很想知道是否有人对此事有看法或有实践经验。

谢谢!


问题答案:

http状态代码仅用于指示应用程序响应的状态。就像您说的那样,如果json参数由于某种原因无效,那么400状态码 合适的答案。

是的,使用http状态代码是一个非常好的主意。另外,状态代码也很容易理解,因为它们不会从应用程序(Web服务)更改为另一个



 类似资料:
  • 问题内容: 好的,我已经到处寻找了。基本上,我们使用的是跨域请求的$ http请求。我们的服务器允许该域,当请求返回200时,一切正常。但是,无论何时我们的服务器返回错误500、401,无论如何,Angular都认为这是CORS问题。 我用Fiddler调试了响应,以验证服务器是否返回了500,但Angular阻塞了。 这是请求: 然后在控制台中,我将看到: XMLHttpRequest无法加载f

  • 这是我的同意模式 这是同意控制器获取声明 这是声明后的同意 同意html thymeleaf表单是 提交表格后。我得到这个错误 HTTP状态500-请求处理失败;嵌套异常是org.thymeleaf.exceptions.TemplateProcessing异常:异常评估SpringEL表达式:"user.providers"(提供者/createOrUpdateConentForm 组织。spr

  • 我需要能够访问请求的状态代码。呼叫可以通过200或201两种方式成功。这在通过邮递员呼叫但使用web客户端时很明显,到目前为止我还无法确定发生了什么。 我在想也许我可以在 onStatus() lambda 函数中使用设置一个整数变量。甚至可以访问 lambda 函数中的外部变量吗?

  • 我正试图通过Axios在本地发送一个POST请求,其中包含用户名和密码。 我正在部署一个Flask应用程序http://127.0.0.1:5000/login,它处理/login路由。POST请求失败,出现以下错误 我研究了一点,认为这可能是CORS的问题,但情况似乎并非如此,因为我尝试了一个Axios GET请求,它工作正常(响应记录正确)。这是我的部分代码 查看ChromeDevTools,

  • 我制作了一个具有三个路径参数的POST web服务。 但当我尝试通过url请求此web服务时,我得到HTTP状态405-不允许使用该方法 但是同样的方法有效,如果我将Web服务更改为@GET 请求URL: 这是我得到的回应 任何帮助将不胜感激!

  • 我希望根据响应对象错误动态返回HTTPStatus代码,如400、400、404等。我被提到这个问题--使用Spring3RESTful以编程方式更改http响应状态,但没有帮助。 我有一个带有方法的控制器类 是一个类,其中有上面使用的两个方法(和)。 我不想签入if条件并相应地返回响应代码,有没有其他更好的方法来做到这一点?