全然投稿できてないので小ネタをば。
Node.jsでBase64変換するときは Buffer#toString('base64') することが多いが、URLセーフなBase64にしたい場合、 Buffer#toString('base64url') が使える。
- Bufferで指定可能なエンコーディング: Buffer | Node.js v25.2.1 Documentation
base64urlは2025/12月時点でもっとも最近追加されたようだが、それでもNode.js v15.7.0, v14.18.0 なのでもうだいぶ前
- 追加された issue: Support for base64url format · Issue #26512 · nodejs/node · GitHub
コードレビューで buffer.toString('base64').replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '') としていたのを見かけたので、こう書けるよと教えたかったのだが、なんて指定するのかど忘れしたのでメモ。
ちなみに結果は上記replaceをしたものと同様。
const buffer = Buffer.from('~~~????') const base64 = buffer.toString('base64') // fn5+Pz8/Pw== const base64url = buffer.toString('base64url') // fn5-Pz8_Pw
いまだに検索すると、 buffer.toString('base64').replace... が上位に出てくるんだよな...