次のようなURLにパラメーターを渡そうとしています。
http://www.foobar.com/foo?imageurl=
また、別のAPIによって生成された画像URLなどのパラメーターと、画像のリンクを次のように渡したいと思います。
http://www.image.com/?username=unknown&password=unknown
ただし、URLを使用しようとすると:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
機能しません。
また、imageURLでencodeURIとencodeURIComponentsを使用しようとしましたが、それも機能しません。
PHPの場合
echo urlencode("http://www.image.com/?username=unknown&password=unknown");
結果
http%3A%2F%2Fwww.image.com%2F%3Fusername%3Dunknown%26password%3Dunknown
Javascriptの場合:
var myUrl = "http://www.image.com/?username=unknown&password=unknown";
var encodedURL= "http://www.foobar.com/foo?imageurl=" + encodeURIComponent(myUrl);
新しいES6 Object.entries()
を使用すると、入れ子になった楽しいmap
/join
をネストできます。
const encodeGetParams = p =>
Object.entries(p).map(kv => kv.map(encodeURIComponent).join("=")).join("&");
const params = {
user: "María Rodríguez",
awesome: true,
awesomeness: 64,
"ZOMG+&=*(": "*^%*GMOZ"
};
console.log("https://example.com/endpoint?" + encodeGetParams(params))