【问题标题】:REST: Tell client to send only csv and text formatREST:告诉客户端只发送 csv 和文本格式
【发布时间】:2019-01-07 22:06:59
【问题描述】:

在restfull WS中,如何告诉客户端只发送csv和文本格式的文件。

content-type 标头中,客户端设置它发送请求的格式,在Accept 标头中,客户端设置它想要接受响应的格式。

但是如何告诉客户端只发送content-type csv 或文件?这是通过一些文档吗?

【问题讨论】:

  • by "但是如何告诉客户端只发送内容类型的 csv 或文件?"你的意思是客户端应该只向服务器发送 csv 或文件?
  • 是...客户端设置内容类型...如何判断他们需要设置 xyz 内容类型...

标签: java rest web-services


【解决方案1】:

415 状态码似乎适合这种情况:

6.5.13. 415 Unsupported Media Type

415(不支持的媒体类型)状态代码表示 源服务器拒绝为请求提供服务,因为有效负载 在目标资源上采用此方法不支持的格式。 格式问题可能是由于请求的指示 Content-TypeContent-Encoding,或作为检查的结果 直接数据。

响应负载可以包含服务器支持的媒体类型列表。

【讨论】:

  • 感谢您的回答
【解决方案2】:

您有一个名为 /textfiles 的端点 - 使用您的 API 的开发人员通常会阅读有关如何实现此端点的文档。除非你没有做一些自动发现魔法(我猜这仍然不常见)。

如果我们以 Facebook 为例,他们只会在 documentation 中说明您可以发送哪些文件:

我们接受以下文件:3g2、3gp、3gpp、[...]

你的问题:

但是如何告诉客户端只发送内容类型的 csv 或文件呢?

也有点不清楚。当用户发送请求时,他已经附加了他认为可以发送的文件。所以在这里你宁愿发送一条错误消息,允许哪些文件。那么我们在这里谈论一些“预”请求吗?

从后端开发人员的角度来看,我可以告诉您:它在文档中。正确处理错误,文档和您的实现开发人员不会讨厌您:)

【讨论】:

  • 谢谢。所以基本上我需要为我的服务提供文档,说明支持的格式。
  • 是的,其他人必须一起工作,所以他们必须知道必须实现什么才能正确使用您的 API。看看任何 API 提供商,他们都有文档 :)
  • @VJS 使用proper status code 而不是仅仅依赖文档。
  • 感谢@CassioMazzochiMolin。当然,我会使用状态码。我很困惑是否提供文件......
  • @CassioMazzochiMolin - 应该始终这样做。但我想一个好的 API 包括一个好的文档、合适的 HTTP 代码和有意义的错误消息。我宁愿从最初的角度来看它。您通常会首先从文档中了解可以发送哪些文件。 ;)
【解决方案3】:

如果我使用 spring 开发一个 restful 应用程序,我会将产品属性设置为返回 csv 或纯文本 (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html)。如果客户端尝试请求 csv 或 text 以外的资源,它将收到错误消息。大概 415

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2011-09-19
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多