代码之家  ›  专栏  ›  技术社区  ›  notnoop

内容类型和表示

  •  5
  • notnoop  · 技术社区  · 15 年前

    django中支持资源(如博客、用户)的多种表示(如html、json、xml)的常见约定是什么?

    首先,我不知道我应该如何格式化我的URL。例如,您将如何使用这两个URL请求xml格式

    • /<resource>.<format> ,例如。 /blogs/123.xml
    • /<format>/<resource> ,例如。 /xml/blogs/123
    • /<resource>?format=<format> ,例如。 /blogs/123?format=xml

    我应该仅仅依赖于 Content-Type 传递参数?有多个移动表示(如iphone、mobile、palm)和全浏览器表示如何?

    风景怎么样?在没有大量if语句或大量重复代码的情况下选择正确模板的惯例是什么。

    1 回复  |  直到 15 年前
        1
  •  7
  •   yfeldblum    15 年前

    如果这一切得以实现,我可能会做的是:

    • 你的观点寻找正确的答案 Accept 接受
    • 您有一个中间件,它在请求URI中查找扩展,删除它,并将相关内容类型添加到请求中 标题。

    对于此解决方案,URL中的内容类型将始终表示为关联的文件扩展名,既不是查询字符串的一部分,也不是资源名称的一部分。但除了浏览器生成的请求外,内容类型 将通过 接受 标题。

    GET /blogs/123.xml HTTP/1.1
    Host: example.com
    

    中间件将其转换为:

    GET /blogs/123 HTTP/1.1
    Host: example.com
    Accept: application/xml
    

    你的观点是 application/xml