宮水の日記

宮水の日記

主に書評や資格取得について記事を書いています。

query-string【JSライブラリ1日1個】

JSライブラリを1日1つ紹介する

1日1つJSのライブラリを調べます。

① ライブラリに関するドキュメントを最初から最後まで読む
② 実際に使ってみる or 使い方を調べる
③ ライブラリを3行で説明する


本日は、query-stringのドキュメントを読んで実際に業務で使っているところを調べました。

ドキュメント

今回読んだドキュメントはこちらです。
github.com
(犬が可愛い...)

調べたこと

本日のライブラリは、引数に文字列(とオプション)を渡すと、HTTPメソッドのクエリパラメータの形に整形してくれるライブラリです。

const queryString = require('query-string');

queryString.stringify({foo: [1, 2, 3]}, {arrayFormat: 'bracket'});
//=> 'foo[]=1&foo[]=2&foo[]=3'

以下の参考記事はjQueryですが、一見簡単そうな機能にみえて自分で実装しようと思うと結構手間ですね...
Javascript でURLのパラメータを取得する方法 | WWWクリエイターズ

わからなかったところ

文字列を整形しているだけなのでRailsみたいにstrong parameterのような機能がなさそうでした。
以下のようなオプションはありましたが、基本的に任意のクエリパラメータをURIに入れられてしまうので、
セキュリティ的に十分注意して使用しないといけない気がしましたが、どうなんでしょうか...
その役割はAPIRailsの機能)で補っているのでしょうか?

.extract(string)
Extract a query string from a URL that can be passed into .parse().

Note: This behaviour can be changed with the skipNull option.

3行でまとめる

query-stringを導入すると、

  • クエリパラメータに関する便利なメソッドが使えるようになる
  • 文字列を渡すと、クエリパラメータの形に整形してくれる

フィードバック

  • query-stringはその名の通りクエリストリングのオブジェクトへのパース部分しかやらないので、Strong parameter的なことは必要ならもちろん別の方法でやらないといけない。単一機能のライブラリなので、その辺にはこのライブラリは関与してない。


以上です!