问题标签 [spring-restcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5751 浏览

spring - Spring MVC REST 默认生成 XML

我对 Spring MVC 和 REST 有疑问。问题是,当我发布一个没有扩展名的 url 或除 json 或 html 或 htm 之外的任何扩展名时,我总是得到一个 xml 响应。但我希望它默认为 text/html 响应。我正在搜索许多主题,但找不到对此的答案。

这是我的控制器类:

这是我的 mvc 上下文配置:

实际上,当我尝试内置的 Eclipse 浏览器时,它工作正常,但是当我使用 firefox 或 chrome 时,它​​会在没有扩展名的请求上显示 xml 响应。我尝试使用ignoreAcceptHeader,但没有改变。

也适用于 IE:/

如果有人有想法请帮忙,谢谢。

0 投票
3 回答
174479 浏览

java - 在 Spring REST 控制器中读取 HTTP 标头

我正在尝试在基于 Spring 的 REST API 中读取 HTTP 标头。我跟着这个。但我收到此错误:

没有为类 java.lang.String 找到消息正文阅读器,
ContentType: application/octet-stream

我是 Java 和 Spring 的新手,所以无法弄清楚。

这就是我的电话的样子:

我试过@Context: HTTPHeadernull在这种情况下。

如何从 HTTP 标头中获取值?

0 投票
1 回答
1385 浏览

java - Spring RESTful Web服务@initbinder不允许其他验证

我有以下休息控制器:

这是请求将被强制转换的 bean:

  1. 在控制器中,如果我指定contolbinder.setValidator(new ChekAtleastOneValueValidator());只会转到 ChekAtleastOneValueValidator它不会检查@notnull @ValidDocumentModifiedDate`
  2. 如果我没有,binder.setValidator(new ChekAtleastOneValueValidator()); 那么控件将检查 @notnull@ValidDocumentModifiedDate验证但不 检查ChekAtleastOneValueValidator

我的问题是:在 Spring 中有没有办法使用Spring 验证、自定义注释和 @notnull 注释并获取所有验证的所有错误,或者 spring 只允许使用 Spring 验证器?

0 投票
2 回答
5970 浏览

spring - SpringRest - 没有为 servlet 请求找到匹配的处理程序方法

没有为 servlet 请求找到匹配的处理程序方法:路径 '/test/add',方法 'POST'....

配置 :

有什么建议么?

0 投票
3 回答
13289 浏览

java - SpringJUnit4ClassRunner 单元测试不起作用。错误:无法加载 ApplicationContext

我对春天很陌生。我们有 Spring Rest API,即模型、控制器和服务。一切正常,当我输入“mvn install”时,它将编译、打包并部署到本地 weblogic。只有当我在下面编写单元测试com.gm.apms.testExampleControllerTest.java使用@RunWith(SpringJUnit4ClassRunner.class)我得到错误调用时才会出现问题ApplicationContext not found。这个 Spring 应用程序使用 JNDI,我什至写了 jdbc 连接src\main\webapp\WEB-INF,文件名是datasource-testcontext.xml我不确定如何在单元测试运行时使用 jdbc 使应用程序直接连接到 DB,但使用JNDI在部署时使用。非常感谢任何帮助。

ExampleControllerTest.java

弹簧配置.xml

这是我得到的错误:

0 投票
1 回答
106 浏览

java - 接收的文件比发送的文件大

这是发送文件的代码:

接收到的文件大小为 8546 字节。发送的文件大小为 6408 字节。即使编码有些错误,接收到的文件也应该是相同的大小,对吧?接收到的文件的内部看起来像两页随机字符,“UEsDBBQACAgIANqVt0YAAAAAAAAAAAAA”<-类似这样。

在发送响应之前,我尝试将从 my_file.docx 读取的字节数组写入本地磁盘上的文件,并且它工作正常。

我还尝试设置我发送的标头的内容长度,但它产生相同的结果 - 接收文件的错误内容,即使大小是正确的。

知道额外的 2Kb 来自哪里吗?我该如何解决这个错误?

0 投票
0 回答
3286 浏览

java - Servlet 过滤器和 Spring REST 控制器

我有一个简单的 Servlet 过滤器,它在请求中查找标头,如果标头丢失,则在将实际请求发送到 Spring Rest 控制器类之前为其设置一个值。

示例:客户端代码设置 foo=bar,然后过滤器不做任何事情。如果客户端没有设置它,那么过滤器会设置一些东西。

当我将实现切换到一个普通的 Java servlet 时,servlet 会看到过滤器设置的标头值。

Rest 控制器得到的是实际客户端设置的标头。

示例:客户端设置标头 foo=bar,然后控制器获取“foo”的值 bar。

假设客户端没有设置 foo 的值并且过滤器设置了它,那么控制器看不到它并且它获取值为 null。

弹簧休息代码:

小服务程序代码:

有趣的是,当我的 Rest Controller 中有类似的东西时,我会在自动连接 HttpServletRequest 对象的地方获得标头值。

很明显,我看到 Spring 的 HttpHeaders 忽略了过滤器设置的标头值。

想知道是什么问题。

我的环境是 Spring 4、Java 8 和 Tomcat 8。

0 投票
0 回答
425 浏览

java - 使用 Spring 验证器接口的基于方法的验证

我正在使用 Spring 开发服务。作为其中的一部分,我有一个处理一个特定对象的控制器类(假设它是 Obj1)。我在控制器类中有 3 个方法。

  1. 从数据库中获取所有 Obj1 的一种方法(不需要验证)。
  2. 一种将新 Obj1 保存到数据库的方法(在这种情况下,Obj1 中的 ID 字段应为 0)。
  3. 更新现有 Obj1 的另一种方法(在这种情况下,ID 字段应大于 0)。

我有一个实现验证器接口的类。我使用这个类来执行所有的验证。让我们称之为 Obj1Validator。

如何根据实现验证器接口的类中调用的控制器方法执行验证?

我知道我可以注释对象属性并使用验证注释来执行这种验证,而不是使用验证器接口来执行。或者我可以使用部分注释和部分验证器方法。

然而,我试图用一个简单的场景来解释我的验证要求,尽管实际上我需要执行的验证要复杂得多,因此我必须使用 Validator 接口而不是基于注释的验证。

有人可以告诉我如何处理这种情况吗?或者有什么方法可以在 Obj1Validator 中获取 @validated(group="x") 中提到的在这种情况下,我可以轻松地执行基于方法的验证。

0 投票
3 回答
6276 浏览

spring-mvc - 如何使用 XML 和 Java 配置实现 Spring Security 4

我正在尝试将 Spring-Security 4 实现到我的 Spring MVC web 和 rest 应用程序中。我添加了 2 个类来启用 Spring Security 的 java 配置方式。我仍然想保留我的 web.xml,而不是将整个项目更改为使用 java 配置。一旦我这样做,我就会收到以下错误:

如您所见,它表示 springSecurityFilterChain 无法识别。这当然应该由@EnableWebSecurity 启用,如下所示:

用于 Spring Security 的类:

奇怪的是,如果我将 springSecurityFilterChain 添加到我的 web.xml,在运行时它会抱怨并说有一个重复的 springSecurityFilterChain。我注意到最终在 Java 配置中,他们这样做:

他们使用 MvcWebApp 的 Java 配置注册 SecurityConfig。这基本上使它成为我相信的 servlet 上下文的一部分。

总而言之,我怎样才能让我的 springSecurityFilterChain 被识别?我是否需要在 web.xml 或现有应用程序上下文中注册我的 SecurityConfig 类?

我认为这可能是第一个问题领域:

春季文档说:

相反,我们应该使用现有的 ApplicationContext 注册 Spring Security。例如,如果我们使用 Spring MVC 我们的 SecurityWebApplicationInitializer。

这是否意味着在我的情况下,我可以使用 SecurityConfig 并且应该将其设为 bean?或者它还不是一个bean,因为它可以通过@Configuration 发现?

如何在使用新的 Java 配置时通过 XML 识别 SecurityConfig?

0 投票
4 回答
23180 浏览

java - Spring Rest 控制器返回特定字段

我一直在思考使用 Spring MVC 设计 JSON API 的最佳方法。众所周知,IO 很昂贵,因此我不想让客户端进行多次 API 调用来获得他们需要的东西。但与此同时,我不一定要归还厨房水槽。

例如,我正在开发一个类似于 IMDB 的游戏 API,但用于视频游戏。

如果我返回与 Game 相关的所有内容,它会看起来像这样。

/api/游戏/1

然而,他们可能不需要所有这些信息,但他们可能再次需要。从 I/O 和性能来看,调用所有内容似乎是个坏主意。

我考虑通过在请求中指定包含参数来做到这一点。

现在例如,如果您没有指定任何包含,那么您将得到以下内容。

但是,您希望您的请求的所有信息看起来像这样。

这样,客户就可以指定他们想要多少信息。但是,我对使用 Spring MVC 实现这一点的最佳方法感到不知所措。

我在想控制器看起来像这样。

我不确定您将如何选择序列化 Game 对象。这甚至可能吗。在 Spring MVC 中解决这个问题的最佳方法是什么?

仅供参考,我正在使用包含 Jackson 的 Spring Boot 进行序列化。