spring - 如何使用 Spring Rest 和 PagingAndSortingRepository 返回 400 响应

标签 spring rest

我有这个存储库

@RepositoryRestResource(collectionResourceRel = "party_category", path = "party_category")
public interface PartyCategoryRepository extends PagingAndSortingRepository<PartyCategory, Integer>
{
}

当我尝试坚持时:

curl -X POST -H "Content-Type: application/json" http://localhost:8080/party_category -d "{\"description\":\"Mock description 3 modif\"}"

我收到 500 错误而不是 400:

{
"timestamp": 1438616019406,
"status": 500,
"error": "Internal Server Error",
"exception": "javax.validation.ConstraintViolationException",
"message": "Validation failed for classes[main.entity.party.PartyCategory] during persist time for groups [javax.validation.groups.Default, ]\\\nList of constraint violations:[\\\n\\\tConstraintViolationImpl{interpolatedMessage='no puede estar vacío', propertyPath=name, rootBeanClass=class main.entity.party.PartyCategory, messageTemplate='{org.hibernate.validator.constraints.NotBlank.message}'}\\\n]",
"path": "/party_category"
}

我该怎么做才能得到这样的友好回复?:

{
"field":"name",
"exception":"Field name cannot be null"
}

如何返回 400 http 代码?

最佳答案

看来您需要将特定异常映射到 HTTP 状态:

@Controller
public class ExceptionHandlingController {

    // Convert a predefined exception to an HTTP Status code
    @ResponseStatus(value=HttpStatus.BAD_REQUEST, reason="Data integrity violation")  // 409
    @ExceptionHandler(javax.validation.ConstraintViolationException.class)
    public void error() {
        // Nothing to do
    }
}

关于spring - 如何使用 Spring Rest 和 PagingAndSortingRepository 返回 400 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791416/

相关文章:

java - hibernate : org. hibernate.LazyInitializationException:未能延迟初始化角色集合:没有 session 或 session 已关闭

java - 禁用 spring 引导执行器端点 java 配置

web-services - 处理用户特定数据时的 Rest api 路由名称

php - symfony2 Doctrine - 将 child 添加到 self 相关的实体

rest - Hub、Spoke 和 ESB 之间的区别

web-services - Jackson 不使用 JSON 根元素

java - 使用EntityManager通过jdbcAuthentication实现Spring Security

spring - Spring ContextLoader错误

java - 如何使用 Mockito 模拟带有 @InjectMock 注释的对象

c# - 异常:从 RESTFUL 服务调用 Bing 翻译服务时找不到默认端点元素