REST API设计:接受标头与Web浏览器的兼容性

时间:2019-06-23 08:48:04

标签: json rest pdf http-headers

这是有关REST API设计的样式问题

我有一个API,该API返回特定的资源,并且可以将资源的字段作为JSON对象或该资源的PDF表示形式返回。正常的REST方式是使用相同的URL,但根据请求的“ Accept”标头返回JSON对象或PDF数据。

从客户端应用程序调用API时很好。但是现在我正在编写一个Web应用程序,并且我想显示PDF。我可以使用XMLHttpRequest获取PDF数据,但是没有一种简单的方法来显示它。 (我记得有一些技巧,涉及在URL中传递整个base64编码的内容,但这既脆弱又令人讨厌)。

在Web应用程序中显示PDF的简单方法是window.open(),但我无法向其传递Accept标头(这里有一些问题供人们问如何做)。

这似乎是一种潜在的常见情况。最好的解决方法是什么?将?pdf或/ pdf或?accept = pdf粘贴到网址上?有事实上的标准吗?还是有我没有想到的解决方案(也许将“ application / pdf”作为默认的请求mime类型,并且如果Accept标头为“ application / json”,则仅返回JSON对象)?

1 个答案:

答案 0 :(得分:0)

实际上,我想得越多,最后一个想法(返回PDF,除非在Accept标头中明确要求application / json)似乎是正确的答案。 Web浏览器可以显示PDF(至少现在是这样),而不能显示JSON对象,因此浏览器本机发出的请求应始终获取PDF,而需要JSON数据的REST客户端通常会明确要求application / json,因此如果API服务器具有更好的与浏览器兼容的格式,则默认情况下不应该这样做。

因为实际上需要将整个问题都解释到问题框中才能使我想到我仍然张贴问题的答案。