【问题标题】:How to decode base64 encoded query params in Django Rest Framework?如何在 Django Rest Framework 中解码 base64 编码的查询参数?
【发布时间】:2019-07-05 07:46:02
【问题描述】:

我非常广泛地使用 Django Rest Framework。

我现在的版本是v3.7.7

我正在研究如何处理超过 2000 个字符限制的查询参数,我发现了这个关于使用 base64 编码的建议。

https://softwareengineering.stackexchange.com/a/353105/16777

如果可能的话,我想知道如何使用 Django Rest Framework 的本机代码来处理查询参数的 base64 编码。

更新:

SWE stackexchange 中的 base64 编码建议是一种缩短查询参数的方法。它仍可能超过 URL 中 2000 个字符的限制。

如果缩短的查询参数使用 base64 编码,如何在 Django Rest Framework 的工作方式中解码查询参数字符串?

第二次更新:

感谢@Daniel Roseman 在 cmets 中指出这一点,我才意识到我对软件工程堆栈交换的答案感到困惑。看起来 base64 编码会增加有效负载大小。

在这种情况下,我的问题将是更多关于如何在 Django Rest Framework 中解码 base64 查询参数,这是否需要?

【问题讨论】:

  • 该答案并没有说 base64 编码将允许查询参数超过 2000 个字符。相反,该编码将始终增加长度。如果您需要更长的参数,请使用带有主体的方法(例如 POST 或 PUT)。
  • 啊...我已经改写了我的问题。是的,我同意 base64 编码的字符串可能仍然太长。是的,如果仍然太长,我将不得不在 POST 中使用 body。我想知道我是否按照建议使用 base64 对查询参数进行编码,如何在 DRF 范式中完成解码?

标签: django django-rest-framework base64


【解决方案1】:

您更新的问题仍然是错误的。 b64 永远不会缩短参数,它会一直加长它们。

但是,如果您出于其他原因确实需要此功能,则可以编写 custom parser 并将其添加到 DEFAULT_PARSER_CLASSES 设置中。

【讨论】:

  • 好的,谢谢!是的,我现在意识到我在缩短部分时弄错了。现在我很好奇如何解码base64参数字符串。感谢您的回答。
猜你喜欢
  • 2016-11-17
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 2020-12-15
  • 2018-05-24
  • 2020-08-19
相关资源
最近更新 更多