Node.js RFC3986 URL前的URL编码(使用+ vs%20)

在Node.js中,我使用querystring.stringify()将对象编码为查询string,以便在URL中使用。 有空格的值编码为%20

我正在处理一个特别挑剔的Web服务,它只接受编码为+空格,正如在RFC3986之前通常使用的那样。

有没有办法为查询string设置一个选项,以便它将空格编码为+

目前,我只是简单地用.replace()来replace%20所有实例,但是如果有一个选项可以提前设置的话,这会有些乏味。

我想不出任何默认的库,不幸的是,我会说你的实现可能是更有效的方法,因为任何其他选项可能会做你已经做的,或将使用较慢的非编译纯JavaScript代码。

那么要求Web服务提供商遵循RFC?

https://github.com/kvz/phpjs是一个提供所有php函数的node.js包。 在编写本文时,http_build_query实现仅支持urlencode(查询string包含+而不是空格),但希望不久将包含enc_type参数/ rawurlencode(空格为%20)。

请参阅http://php.net/http_build_query

RFC1738(+)将是默认的enc_type,所以你可以立即使用它来达到你的目的。