發表文章

目前顯示的是 3月, 2017的文章

Nodejs Base64 Url Safe

一、關於Base64編碼: 雖然常用卻沒注意過,一般Base64,包含英文字母A-Z、a-z、數字0-9,這樣62個字元,然後呢,這樣還少2個字元才64個,這另外兩個就是+、/兩個符號,最後呢,編碼完成依據狀況會補上=,詳細的說明可以參考wiki。 https://zh.wikipedia.org/wiki/Base64 之前使用的情境通常是在http的header中使用,比如oauth相關的應用,可是當打算於url中使用base64編碼時,就可以發生問題了,因為編碼中包含了"+"跟"/",於QueryString使用需在編碼過,在Restful的api使用時,"/"更是會造成url路徑錯誤。 針對這個問題,Base64有一個變種,通常會說是URL and Filename Safe Alphabet,符合 RFC4648, Section 5. 規範,這個規範將"+"、"/"至換成"-"、"_",並移除最後的"=" 二、Nodejs的Base64 encode與decode 在Nodejs常這樣用 var   code  =  new   Buffer ( "Base64是一種基於64個可列印字元來表示二進位資料的表示方法" ). toString ( 'base64' ); //code:QmFzZTY05piv5LiA56iu5Z+65pa8NjTlgIvlj6/liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U= console . log ( "code:" + code ); var   decode  =  new   Buffer ( code  ,  'base64' ). toString (); //decode:Base64是一種基於64個可列印字元來表示二進位資料的表示方法 console . log ( "decode:" + decode );

expressjs,如何監聽res.send事件

事情是這樣的,目前的專案使用了parse-server,然後我想要介入使用者登入的行為,比如登入成功後針對某些user的資料做處理等等,不過又不想直接改寫parse-server的原始碼,所以就搜尋了一下能否攔截res.send事件,在stackoverflow找到了下面這篇: http://stackoverflow.com/questions/33732509/express-js-how-to-intercept-response-send-response-json 那就開始實作吧! 1.先簡單講一下express專案使用parse-server的方式 /* *    * App.js   * express相關設定不另外說明,只列出 parse-server 部分  */ var   ParseServer  =  require ( 'parse-server' ). ParseServer ; //Parse server的參數設定 var   ParseServerOption  = {   //各種參數   .... } //產生回應api呼叫的物件 var   api  =  new   ParseServer ( ParseServerOption ); //設定parse的路由 app . use ( '/parse'  ,  api ); 2.現在我們嘗試加入middleware,先新增檔案 parseMiddleware.js /* *    * parseMiddleware.js  */ const   express  =  require ( 'express' ); const   router  =  express . Router (); /**   * 攔截 Parse 的login事件  */ router . post ( '/login' ,  function ( req  ,  res  ,  next ){     //當login時抽換掉res.send事件      var