问题标签 [content-negotiation]

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 投票
1 回答
898 浏览

android - 创建 ContentNegotiatingViewResolver 时出现 BeanCreationException

我正在尝试让我的 Android 应用程序与托管我的 Web 应用程序的服务器通信。对于 Web 端,我使用的是 Spring,一切正常。我可以使用 spring 等发送数据库数据。但是现在,我正试图让我的 android 应用程序与服务器通信。为此,我遵循了本教程:http ://blog.trifork.com/2011/02/07/creating-an-android-app-for-your-website-with-spring-android-and-rest/

现在,当我尝试打开网页时,会收到很多异常。(我什至不需要尝试从 Android 应用程序发送任何内容!)。它工作正常,直到我在 springmvc-servlet.xml 中编写了一些代码

因此,由于我是 Spring 新手,因此在解决此异常时遇到了麻烦。这是我的 sprinmvc-servlet.xml 代码(我更改了代码的某些部分,遵循其他教程,但是当我使用我使用的第一个教程中的代码时,我得到了相同的异常)

这是例外情况(有很多,但不要害怕!:D):

0 投票
0 回答
165 浏览

http-headers - 用于将表示链接到抽象资源的链接关系类型?

我使用内容协商让用户代理选择资源的几种表示之一。

示例:资源http://example.com/essay具有以下表示:

  • text/htmlhttp://example.com/essay.html
  • application/xhtml+xmlhttp://example.com/essay.xhtml
  • application/pdfhttp://example.com/essay.pdf

假设用户代理选择了 HTML 变体。现在我可以将其他表示与链接关系类型链接起来alternate

但是当某人只有 URI 时http://example.com/essay.html,他怎么会知道内容类型中性 URI 是http://example.com/essay,例如用于向某人发送链接而不强制他也想查看 HTML 变体?

是否有链接类型可以链接回“抽象”资源 ( http://example.com/essay)?

我也不能对该链接使用alternate链接关系类型,因为资源没有内容类型:

如果alternate关键字与type属性一起使用,则表明引用的文档是对当前文档的指定格式的重新表述。

我认为canonical链接关系类型在这里不合适。它在某些情况下会起作用,但也许我希望 HTML 变体成为规范的变体(用于搜索引擎等的索引)。当我制作http://example.com/essay规范版本时,搜索引擎(原则上)可以使用 PDF 变体进行索引。

0 投票
2 回答
3426 浏览

spring-mvc - 当客户端发送 Accept 时,将 text/html 优先于其他内容类型:*/*

我正在尝试使用 Spring MVC 3.2 编写一个使用/生成 JSON 和 HTML 的控制器。我有两个产生不同内容类型的处理程序方法:

如果Accept来自客户端的标头包含text/htmlor application/json,这将非常有效

...但后来出现了 Internet Explorer。如此处所述,IE 的Accept标头各不相同,但它从不包含text/html并且始终*/*位于末尾。当 Spring 收到来自 IE 的请求时,它看不到与我的控制器生成的内容类型直接相等的内容类型,但是,锁定*/*通配符,它​​(正确地)决定两种映射都适用。

面对多个匹配的处理程序映射,Spring(在 RequestMappingHandlerMapping bean 中)按照字典顺序对映射进行排序,选择第一个,然后继续。从我的角度来看,问题在于这个过程优先application/jsontext/html. 除非客户端特别请求,否则我宁愿返回text/htmlapplication/json——这样,我可以将 HTML 提供给 IE 等愚蠢的客户端,将 JSON 提供给我的 API 用户等精通内容类型的客户端。

有谁知道不需要扩展 RequestMappingHandlerMapping 来对处理程序进行不同排序的方法?你有什么简单的解决方法吗?

注意:我尝试在 ContentNegotiationManager 中设置默认内容类型,如Spring blog中所述。它不能解决我的问题,因为该设置仅在未指定 Accept 标头时生效。

0 投票
2 回答
2018 浏览

spring-mvc - Spring MVC:为不同的带注释的控制器方法应用不同的 JSON 序列化器

我正在使用带注释的控制器和内容协商 (@ResponceBody) 创建一个 REST 服务。我有两个不同的控制器方法返回 {{Foo}} 的实例,它们服务于不同的用例,我希望 {{Foo}} 的 JSON 表示对于这些方法是不同的。

例如:

当然,我可以使用 DTO 模式并以不同的方法返回不同的 DTO(例如分别为 {{FooDTO1}} 和 {{FooDTO2}}),然后为这些 DTO 注册不同的 JSON 序列化程序。但我想知道是否有更好的方法,就我而言,定义两个额外的 DTO 类并创建这些类的一次性实例只是为了应用正确的 JSON 序列化程序,这感觉不对。我不能以某种方式暗示 Spring 或 Jackson 在哪种情况下应该使用哪个 Serializer 吗?

0 投票
3 回答
2072 浏览

java - 使用 Spring MVC 服务 Java 模型的 RDF 表示?

如何通过 Spring MVC 提供 Java 模型的 RDF 表示?

我有使用 Spring 的内容协商机制工作的 JSON 和 XML 表示,并希望对 RDF 做同样的事情。

0 投票
1 回答
658 浏览

spring-mvc - Spring MVC 内容协商的每个控制器的默认 mime 类型

有没有办法为使用 Spring 的内容协商功能的 Spring MVC 控制器配置默认 mime 类型,即

ControllerA - 我希望默认的 mime 类型是 JSON,所以http://mycompany.com/myresourceA会返回 JSON,如果我想要 XML,我必须添加扩展http://mycompany.com/myresourceA.xml

ControllerB - 我希望默认的 mimetype 是 XML,所以http://mycompany.com/myresourceB会返回 XML,如果我想要 JSON,我必须添加扩展http://mycompany.com/myresourceB.json

在我contentNegotiationManagerBean的默认 mime 类型设置为 XML 但这是一个全局配置

0 投票
1 回答
4430 浏览

spring-mvc - 如何将 JasperReportsMultiFormatView 与 ContentNegotiatingViewResolver 一起使用?

我的 html、json 和 xml 与 Spring 的 ContentNegotiatingViewResolver (Spring 3.2) 配合得很好

尝试使用 jasperreports 获取 csv 输出。

Spring可以找到并解析.jrxml文件ok。当我尝试查看 .csv URL 时出现以下错误:

这是我的 webmvc-config.xml (正确吗?):

0 投票
1 回答
119 浏览

java - 查看不同输出格式时的内容协商

我正在用 spring mvc 做一些练习编程,我决定做一个关于内容协商的例子。

我从 uri "/products" 开始:

  • 当我询问 /products.json 时,它会返回 json,我对此感到高兴
  • 当我要求 /products.xml 它返回正确的 xml 时,我再次对此感到高兴
  • 当我要求 html 视图 (/products) 时,目前我只为产品显示一个简单的 html 表,但是如果我想为 html 页面包含额外的动态内容,如标签云或类似产品(不相关的东西到产品)?

下面是我的控制器方法代码。

我想要达到的目标如下:

  • 一种保留我的单一控制器方法但 html 视图会有额外内容的方法

我的想法是:

  • 也许使用 servlet 过滤器来丰富 ModelAndView 仅针对 text/html mimetype?但是,您正在为所有可能不受欢迎的 html 请求执行此操作?

  • 目前我解释自己的方式感觉就像我想要一个完全渲染的 html 视图发送给客户端。也许我看错了这个问题,我应该考虑在通过 javascript 加载页面后检索额外内容的思路?

那么有可能实现我想要的解决方案吗?另一部分是我的预期解决方案在实践中是否真正可取:P

0 投票
1 回答
201 浏览

rest - 使用 WebSharper 进行内容协商

我正在研究是否可以使用 WebSharper 构建支持内容协商的 ReSTful API。我希望它支持类似于 Web API 模型的东西,控制器返回一个资源,该资源随后根据请求的接受标头转换为正确的表示。然而,header info 似乎只对Router 可用,Router 将请求映射到Action,然后Controller 负责将Action 转换为一些Content(即表示)。这表明我需要为资源的每个表示单独的操作,这感觉很难看。

我是否在这里遗漏了什么,或者 WebSharper 是否意味着“MVC 做得正确”并且不适合这个用例?

0 投票
2 回答
38225 浏览

http - 如何在没有提供 Accept 标头的情况下在 Spring MVC 中设置默认内容类型?

如果将请求发送到我的 API 时没有 Accept 标头,我希望将 JSON 设为默认格式。我的控制器中有两种方法,一种用于 XML,一种用于 JSON:

当我发送没有 Accept 标头的请求时,getXmlData会调用该方法,这不是我想要的。如果没有提供 Accept 标头,有没有办法告诉 Spring MVC 调用该getJsonData方法?

编辑:

有一个defaultContentType字段ContentNegotiationManagerFactoryBean可以解决问题。