【问题标题】:Asp.Net Web API content negotiationAsp.Net Web API 内容协商
【发布时间】:2014-12-22 23:57:51
【问题描述】:

…API/emailMessage/?emailId=test123

我已经使用 Web API 编写了上述 URL,以获取 JSON 数据格式的电子邮件(电子邮件正文、发件人、抄送、收件人等)。

另外,我还要求允许下载同一 URL 的电子邮件和附件。

一种方法是使用内容协商。我可以使用“MediaTypeHeaderValue("application/octet-stream")”将内容作为可下载内容发送。

问题是…… 1.用户应该在GET请求中请求JSON内容或下载内容的哪个参数?或者从 HTTP 客户端询问内容类型的正确方法是什么? 2. 在服务器端,我可以读取用户要求的内容类型,并仅使用 case 语句发送适当的数据。在这种情况下,服务器端有什么需要考虑的吗?

谢谢你, 埃里克

【问题讨论】:

    标签: rest asp.net-web-api asp.net-web-api2


    【解决方案1】:

    Accept 请求标头用于通知服务器客户端支持哪些媒体类型。但是,不要担心将 format= 参数添加到您的 URI 以请求不同的格式。它不会对您的申请产生负面影响。

    【讨论】:

    • 关于 URL 格式/设计或 Rest 样式或 SEO URL 存在很大争议。哪个更有意义(接受请求标头或向 URL 添加新参数)?
    • @EricSmith 我知道大多数论点。使用 Accept 标头会使缓存更加困难,因为您依赖于正确实现 Vary 的缓存。正确的选择取决于很多因素。但是“它不是 RESTful”的论点是转移话题。
    猜你喜欢
    • 2014-07-07
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2013-12-13
    相关资源
    最近更新 更多