首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot REST API错误处理指南

API Error Handling 作者:BRUNO LEITE 翻译:雁惊寒 文章正文 API在提供错误消息的同时进行适当的错误处理,是一个非常有用的功能,因为这能让API客户端对问题进行正确地响应..."timestamp": 1500597044204, "status": 400, "error": "Bad Request", "exception": "org.springframework.http.converter.HttpMessageNotReadableException...exception字段只有Java开发人员会感兴趣,该消息使API消费者迷失在与它们无关的细节。是否有更多的细节可以错误产生的异常中提取出来呢?...我们将创建一个名为ApiError的类,该类用于保存REST调用期间发生错误的相关信息。...比如,4xx表示客户端错误,5xx意味着服务器错误。 比较常见的情况是:http返回码400表示BAD_REQUEST,例如,客户端发送了格式不正确的字段(如无效的电子邮件地址)。

3.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

【愚公系列】2022年04月 Python教学课程 77-DRF框架之异常

文章目录 一、DRF框架自带异常 二、自定义异常 一、DRF框架自带异常 REST 框架的视图处理各种异常,并处理返回适当的错误响应。 处理的异常包括: 在 REST 框架定义的异常。...验证错误的处理方式略有不同,并且将在响应包含字段名称作为键。如果验证错误不是特定于特定字段的,则它将使用“non_field_errors”键,或者为该设置设置设置的任何字符串值。...示例验证错误如下所示: HTTP/1.1 400 Bad Request Content-Type: application/json Content-Length: 94 {"amount": ["...如果处理程序返回,则将重新引发异常,Django将返回标准的HTTP 500“服务器错误响应。...它不会用于视图直接返回的任何响应,例如在序列化程序验证失败时由泛型视图返回的响应。HTTP_400_BAD_REQUEST

1K40

【愚公系列】2022年04月 Python教学课程 65-DRF框架之请求和响应

文章目录 一、请求和响应 1.请求对象 2.响应对象 3.状态码 4.视图中的使用 5.URL的可选格式 ---- 一、请求和响应 1.请求对象 REST框架引入了一个扩展常规的对象,并提供更灵活的请求解析...2.响应对象 REST 框架还引入了一个对象,该对象是一种获取未渲染内容并使用内容协商来确定要返回给客户端的正确内容类型。...3.状态码 在视图中使用数字 HTTP 状态代码并不总是能带来明显的阅读效果,如果错误代码出错,也很容易不注意到。REST 框架为每个状态代码(如模块)提供了更明确的标识符。..._BAD_REQUEST) elif request.method == 'DELETE': snippet.delete() return Response(...,以附加一组除现有 URL 之外的 URL from django.urls import path from rest_framework.urlpatterns import format_suffix_patterns

61630

微服务声明式rest客户端之feign使用入门教程

在本教程,我们将介绍Feign。我们还将谈谈Spring Boot和Feign。 在本教程,我们将了解如何使用Feign编写声明性REST客户端。...实际的实现将由框架在运行时完成,以及调用之间的各种消息转换。我们首先需要设置一个使用已知端点运行的示例REST API,以便我们可以使用feign客户端调用它们。...如果未找到产品,则返回HTTP.BAD_REQUEST响应。...3.处理错误错误 默认情况下,Feign仅针对任何错误情况(其中响应不是2XX或者存在转换错误等)抛出FeignException。...但是,如果找不到产品ID,您可能希望捕获这些错误并在最终处理响应,就像产品服务引发的BAD_REQUEST错误一样。

1.8K40

DjangoRestFramework,restful规范、APIview、解析器组件、Postman等

REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”     REST资源的角度类审视整个网络,它将分布在网络某个节点的资源通过...该方式,通讯是由消息驱动,而不再是某个动作(方法调用)。这种 Web 服务也称为“面向消息的服务”。     网络应用程序,分为前端和后端两个部分。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...301 状态码(永久重定向)302 状态码(暂时重定向,307也是这个含义) 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作...HTTP/1.1 400 Bad Request Content-Type: application/json { "error": "Invalid payoad.

2.5K20

2. DRF入门

别的API获取数据或者自己写API提供数据,数据格式一般都是采用JSON格式。...这期间就会涉及两个专业术语: **序列化:**将python对象转json,后端响应 **反序列化:**将json转为python对象, 后端处理数据需要转换成python对象 之前常用三种序列化方式...反序列化应用场景示例:别的API获取数据,在Python里处理。...-> 数据传入序列化器-> 序列化器将数据进行序列化 -> 调用序列化器的.data获取数据 -> 响应返回前端 反序列化(写数据):视图获取前端提交的数据 -> 数据传入序列化器 -> 调用序列化器的...serializer.errors:获取反序列化器验证的错误信息 serializer.data:获取序列化器返回的数据 serializer.save():将验证通过的数据保存到数据库(ORM操作)

1.6K50

django 1.8 官方文档翻译: 3-1-2 编写视图

返回错误Django返回HTTP错误是相当容易的。有一些HttpResponse的子类代表不是200(“OK”)的HTTP状态码。...如果你在视图函数的任何地方抛出Http404异常,Django都会捕获它,并且带上HTTP404错误码返回你应用的标准错误页面。...这个模板应该叫做404.html,并且在你的模板树位于最顶层。 如果你在抛出Http404异常时提供了一条消息,当DEBUG为True时它会出现在标准404模板的展示。...你可以将这些消息用于调试;但他们通常不适用于404模板本身。 自定义错误视图 Django默认的错误视图对于大多数web应用已经足够了,但是如果你需要任何自定义行为,重写它很容易。...覆盖了bad_request()视图: handler400 = 'mysite.views.my_custom_bad_request_view'

54130

快速学习-RESTFul设计风格

id=100 2)HTTP动词(请求方式) 对于资源, 一般有4个操作, CURD(增/删/改/查) GET: 服务器获取资源(一项或多项) POST: 在服务器新建一个资源 PUT: 在服务器更新资源...常见状态码: 状态码 含义 说明 200 OK 操作成功, 并返回数据 201 CREATED 新建成功 204 NO CONTENT 删除成功 400 BAD REQUEST 请求语法错误 403 Forbidden...) - 资源的URI已被更新 303(See Other) - 其他(如,负载均衡) 304(not modified)- 资源未更改(缓存) 400bad request)- 指代坏请求(如...(bad request)- 指代坏请求 404 (not found)- 资源不存在 409 (conflict)- 通用冲突 500 (internal server error)- 通用错误响应...通常会将 状态码、错误信息、返回数据,都放到返回结果

1.2K20

RESTful API 最佳实践

例子:在HTTP中使用GET方法通常用于服务器获取资源,无论调用多少次产生的额外效果都是服务器获取资源,所以GET具有幂等性;而POST方法通常用于提交数据在服务器上创建一个资源,由于最终创建的结果每次都是不同的...Request:通过标准HTTP方法对资源CRUD GET:查询资源 GET /comments //获取所有评论 GET /comments/tid/1 //获取文章tid为1的所有评论 POST:创建资源...animal_type_id=1:指定筛选条件 就像HTML的出错页面向访问者展示了有用的错误消息一样,API也应该用之前熟悉易读的格式来提供有用的错误消息。...header生效的时候用 400 Bad Request – 请求异常,比如请求的body无法解析 401 Unauthorized – 没有进行认证或者认证非法。...这么做的好处是可以通过浏览器访问 – 如果浏览器服务器收到401 Unauthorized状态码,它将会弹出一个对话让人输出认证凭证。

1.9K31

django 1.8 官方文档翻译:13-3 日志

每次满足bad_mojo 条件,将写入一条错误日志记录。 命名logger logging.getLogger() 调用获取(如有必要则创建)一个logger 的实例。Logger 实例通过名字标识。...其次,下面这个示例演示如何让日志系统将Django 的日志打印到控制台。django.requestdjango.security 不会传播日志给上一级。它在本地开发期间可能有用。...例如,如果请求包含的HTTP Host 头部与ALLOWED_HOSTS 不匹配,Django 将返回400 响应,同时将记录一个error 消息django.security.DisallowedHost...由于SuspiciousOperation 导致400 响应的请求不会在django.request logger 记录日志,而只在django.security logger 记录日志。...你还可以错误报告显式过滤掉特定的敏感信息 —— 更多信息参见过滤错误报告。

77510

DjangoRESTframework(补充)

验证失败,可以通过序列化器对象的 errors 属性获取错误信息,返回一个字典, 包含字段和字段的错误,若是非字段错误,可以通过修改 REST framework 配置的 NON_FIElD_ERRORS_KEY...farmework 接收到此异常,会向前端返回 HTTP 400 Bad REquest 响应 # Return a 400 response if the data was invalid. serializer.is_valid...常用属性 1) .data –>类似 Django request.POST 包含了解析之后的文件和非文件数据 包含了对POST、PUT、PATCH请求方式解析后的数据 利用了REST...APIView与View的不同之处在于: 传入到视图方法的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...如果序列化器对前端发送的数据验证失败,返回400错误

2.2K30

【Python全栈100天学习笔记】Day46 导入导出Excel报表和配置日志

最后配置的日志记录器是用来真正输出日志的,Django框架提供了如下所示的内置记录器: django - 在Django层次结构的所有消息记录器 django.request - 与请求处理相关的日志消息...5xx响应被视为错误消息;4xx响应被视为为警告消息 django.server - 与通过runserver调用的服务器所接收的请求相关的日志消息。...5xx响应被视为错误消息;4xx响应被记录为警告消息;其他一切都被记录为INFO django.template - 与模板渲染相关的日志消息 django.db.backends - 有与数据库交互产生的日志消息...项目 说明 Versions Django的版本 Time 显示视图耗费的时间 Settings 配置文件设置的值 Headers HTTP请求头和响应头的信息 Request 和请求相关的各种变量及其信息...=Avg('bad_count')) 可见,Django的ORM框架允许我们用面向对象的方式完成关系数据库的分组和聚合查询。

58220
领券