我希望获得json
格式的JPA验证和服务器内部错误,而不是堆栈跟踪,
使用Spring JPA data REST
@RepositoryRestResource(path = "entity")
public interface MyEntityRepo extends CrudRepository<MyEntity, Long> {}
当post没有name,address
属性时,我希望验证错误不为NULL。
curl -i -X POST -H "Content-Type: application/json" -d '{"name":"not passed and @NotNull","address":"not passed and @NotNull","city":"city","area":"area"}' http://localhost:8080/clinicfinder/api/entity
当前回报:
>
所需返回:
response 404, {"errors":[{"entity":"MyEntity","message":"may not be null","invalidValue":"null","property":"name"},{"entity":"MyEntity","message":"may not be null","invalidValue":"null","property":"address"}]}
POM
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<spring.data.jpa.version>1.11.1.RELEASE</spring.data.jpa.version>
<spring.data.rest.webmvc.version>2.6.1.RELEASE</spring.data.rest.webmvc.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- Spring Rest Repository -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring.data.jpa.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-webmvc</artifactId>
<version>${spring.data.rest.webmvc.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class>
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<context:annotation-config/>
<bean class="path.to.config.RestValidationConfiguration" />
@Configuration
public class RestValidationConfiguration extends RepositoryRestConfigurerAdapter {
@Bean
@Primary
/**
* Create a validator to use in bean validation - primary to be able to
* Autowire without qualifier
*/
Validator validator() {
return new LocalValidatorFactoryBean();
}
@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
Validator validator = validator();
// bean validation always before save and create
validatingListener.addValidator("beforeCreate", validator);
validatingListener.addValidator("beforeSave", validator);
}
}
谢谢Alan Hay给我的建议。
我们有一个REST服务器(资源授权),它基于spring-security spring web jersey的Oauth2,用于我们的REST资源。大部分工作都很顺利,但是当使用错误的凭证在用户名-密码流中点击/oauth/token时,我们得到的不仅仅是400(按照规范应该是正确的),而是作为JSON的整个stacktrace。我四处搜寻、调试、摸索,但还是找不到罪魁祸首。这可能是Spring
在将数据插入表时遇到问题。其他表可以很好地处理有说服力的查询。 我的HTML表单的帖子工作得很好。我可以得到另一种回应 我的表格运行得很好。没问题 我的问题是,当我试图在“myTable”表中插入数据时,会出现内部服务器错误500,无法跟踪它是什么。即使是laravel debugbar也帮不了我 路线。php FormController。php 我的模型。php 在我的表“myTable”中,
问题内容: 这从未发生过。通常它会显示错误,但是现在它只给我500个内部服务器错误。当然,在显示错误之前,它是不同的服务器。现在,我在新服务器上(我具有完整的root用户,因此,如果需要在php.ini中的某个位置进行配置,则可以。)或者也许与Apache兼容? 我一直在忍受它,只是将文件传输到我的其他服务器上并在其中运行以查找错误,但这变得太乏味了。有没有办法来解决这个问题? 问题答案: 检查,
在尝试使用Twython进行简单的推特搜索时 我得到了这个错误: 这里可能有什么问题?
问题内容: 这是我在laravel 5中测试的ajax(请参阅下文) 和触发链接 和我的路线 但是当我在google chrome中运行控制台时,它给了我错误,并且未返回预期的响应“在laravel 5中返回’成功!ajax’;” POST http://juliver.laravel.com/test 500(内部服务器错误) 我的代码有什么问题/问题?我缺少什么? 问题答案: 虽然这个问题存在
我使用spring ide在本地机器嵌入式apache服务器上部署了spring boot web应用程序,并访问了一个带有错误令牌的url,在这种情况下,它会返回未经授权的访问错误401和托管异常处理抛出的特定错误消息,而如果我在独立但相同的apache服务器上部署相同的应用程序,它会给我500个内部服务器错误而不是401或任何其他服务器端错误。 我捕获的日志只有以下一行不同: 下面是我用来处理