当前位置: 首页 > 知识库问答 >
问题:

通过REST处理HTTP错误

闾丘成礼
2023-03-14

我正在尝试在javascript中自定义一个可以通过REST调用访问的endpoint。此终结点处理与不同情况相关的多个条件(基本上它生成一次性密码,然后验证它以检查它是否过期等)。

所以基本上结构是这样的:

(function() {
    var obj = new Object();
    ...
    if (...) {      
       obj.code = 422;      
       obj.message = "Code Expired";        
       return obj;
    } else {...}
    ....
    if (...) {          
       obj.code = 423;      
       obj.message = "No more attempts";        
       return obj;    
} else {...} 
})();

我在开始时设置了一个对象,然后映射一个json消息,以便检索具有不同代码/消息响应的正文。因此,当终结点输入这些条件时,它将返回对象,并且 Header 始终为 200(调用成功)。像这样:

HTTP/1.1 200 OK“x-frame-options”:“SAMEORIGIN”,“缓存控制”:“无缓存”,“内容类型”:“application/json;charset=UTF-8”,

{ “code”: 422, “message”: “Code Expireed” }

是否可以在状态代码中映射错误?为了检索以下内容:

HTTP/1.1 422不可处理实体“x-frame-选项”:“SAMEORIGIN”,“cache-Control”:“no-cache”,“content-type”:“Application/json; charset=UTF-8”,

{ “code”: 422, “message”: “Code Expireed” }

共有1个答案

仇正平
2023-03-14

我想我只需要在返回中抛出一个错误代码,比如

...
else {
  throw {
    code : 400,
    message : "Error"
  };
}
...
 类似资料:
  • 问题内容: 我有2 ng-包括HTML。考虑服务器中是否不存在ng-include src之一。截至目前,它只会加载空白html,并且在浏览器控制台中会显示未找到http-404文件。 因此,在这种情况下,我只想将默认错误页面(服务器中存在)加载到该特定div中,即一半显示默认错误页面,另一部分显示通过nginclude加载的正确div。 我的逻辑是,使用HTTP拦截器拦截所有HTTP调用。无论何

  • 问题内容: 在REST控制器中同时使用 @ControllerAdvice 和 @Valid 批注时,遇到了麻烦。 我有一个声明如下的rest控制器: 还有一个ErrorHandler类: 问题是,如果我在 RestExample.add* 方法中添加 “引发新的RuntimeException” ,则该异常由 RestErrorHandler 类正确处理。 *** 但是,当向控制器卷曲无效请求时

  • 我正在使用SpringMVC开发一个REST服务,在那里我在类和方法级别有@刚需映射。 此应用程序当前配置为返回在web中配置的错误页面jsp。xml。 但是,我希望返回自定义JSON,而不是此错误页面。 通过在controller中编写此代码,我能够处理异常并为其他异常返回json,但不确定在url根本不存在的情况下如何以及在何处编写返回json的逻辑。 我试过@ControllerAdvice

  • 我们正在构建一个JavaSDK,以简化对我们提供REST API的服务之一的访问。这个SDK将由第三方开发者使用。我正在努力寻找最好的模式来实现更适合Java语言的SDK中的错误处理。 假设我们有其余的endpoint:。这可能会返回以下HTTP状态代码: 401:用户未通过身份验证 403:用户没有访问此照片的权限 404:没有带那个身份证的照片 该服务看起来像这样: 在上面的代码中,我还没有提

  • 我正在努力思考如何通过RESTAPI将一个集合更新到另一个资源,并寻求其他人如何看待这个过程的指导。 假设您与实体“父”(一)和“子”(多)有多对一的关系。我的思考过程是,您可以通过单个PUT终结点处理更新父级的子级集合。这样,用于更新父实体的子实体和向父实体集合添加新子实体的终结点通过单个终结点进行。请求正文将包含一个子实体数组,endpoint本身将包含足够的信息来知道哪个父实体正在更新: i

  • 问题内容: 我在使用HTTP代理(仅允许http连接)的网络的笔记本电脑(Ubuntu)上。 当我将svn用作诸如“ http:// .....”之类的url时,一切都很酷(google chrome存储库工作完美),但是现在我需要使用svn:// …从服务器进行svn了。我看到连接被拒绝。 我已经在/ etc / subversion / servers中设置了代理配置,但这没有帮助。 有人有意