alright-myserver
v1.2.0
Published
expressを参考にして自分のブログ用のnodeのサーバーオブジェクトみたいなものを作る。
Downloads
5
Readme
my server 【設計書】
expressを参考にして自分のブログ用のnodeのサーバーオブジェクトみたいなものを作る。
できること
サーバーを起動して、urlのパスの第一層目の内容に合わせた関数を実行できる。そのときにエラーが起きた場合はエラー時の関数を実行できる。
オブジェクト(こんな使い方)
const myserver = require("myserver")
myserver()
.serverProgaram('/page', getPage) // urlの第一層目のパスとそのときに実行する関数をセットする。
.serverPrograms({ // サーバープログラムを複数まとめてセットできる
'/': getPage,
'/file': getFile,
})
.beforeServerProgramOf('/page', pageCheck) // 特定のサーバープログラムの前に実行する関数をセットする。
.beforeServerProgram(accessBlock) // サーバープログラムの実行される前に実行する関数をセットする。
.error(getErrorPage) // エラーのときに実行する関数。
.errorType({ // エラーの名前に合わせて実行する関数を決められる。
'notfindpage': getErrorPage,
'notfindfile': return404,
})
.listen(5000) // サーバーを開始するときのポートを設定。
メソッドの説明
serverProgram( @string , @function )
第一引数の文字列はurlの第一層目のパス。 既に同じパスがった場合は上書きされる。 第二引数は上記のパスが一致したとき実行する関数を値に入れる。 第二引数の関数の詳細は「サーバープログラムの説明」に記述。
serverPrograms( @object )
上記の複数版。
beforeServerProgramOf( @string , @function )
第一引数の文字列はurlの第一層目のパス。 既に同じパスがあった場合は上書きされる。 第二引数の関数は、第一引数のパスでサーバープログラムが指定されているときに、サーバープログラムが実行される前に実行する。 第二引数の関数の詳細は「beforeServerProgramの説明」に記述
beforeServerProgram( @function )
サーバープログラムが実行される前に実行する関数を入れる。 関数の詳細は「beforeServerProgramの説明」に記述
error( @function )
引数の関数は、urlがサーバープログラムにない場合や、サーバープログラムがエラーを返したときに、エラー名に一致するエラープログラムを探すが、それもない場合に実行される。 引数の関数の詳細は「エラープログラムの説明」に記述。
errorType( @object )
オブジェクトはエラー名をキーにして、そのときに実行される関数を値にする。 エラー名については「エラーオブジェクトの説明」に記述。 また、オブジェクトの値に入る関数の詳細は「エラープログラムの説明」に記述
serverProgram( @string , @function )
listen( @number )
引数のポートでサーバーを開始します。
サーバープログラムの説明
第一引数
request
オブジェクト。
詳細は https://nodejs.org/api/http.html#http_class_http_incomingmessage を参照(外部ページ)。
第二引数
response
オブジェクト。
詳細は https://nodejs.org/api/http.html#http_class_http_serverresponse を参照(外部ページ)。
第三引数
エラーオブジェクト。 詳細は「エラーオブジェクトの説明」に記述してあります。
戻り値
エラーオブジェクトを返すとnameに対応したエラープログラムが実行されます。 エラーオブジェクトのnameとdetailsは何も書かずに省略できます。
promiseの使用
戻り値にPromise
オブジェクトを使用することが出来ます。
サーバープログラムの実行時にawait
演算子を使用しているので、Promiseが解決するまで次の処理に移りません。
(非同期の処理でも、reject
関数でエラーオブジェクトを返せば正常にエラープログラムに移ります)
beforeServerProgramの説明
myserver
.serverProgram('/page', () => {
console.log('serverProgram')
})
.beforeServerProgram('/page', () => {
console.log('before') // '/page'に対してリクエストが来たときこっちが先に実行される。
})
第一引数
request
オブジェクト。
詳細は https://nodejs.org/api/http.html#http_class_http_incomingmessage を参照(外部ページ)。
第二引数
エラーオブジェクト。 詳細は「エラーオブジェクトの説明」に記述してあります。
戻り値
エラーオブジェクトを返すとnameに対応したエラープログラムが実行されます。 エラーオブジェクトのnameとdetailsは何も書かずに省略できます。
promiseの使用
戻り値にPromise
オブジェクトを使用することが出来ます。
サーバープログラムの実行時にawait
演算子を使用しているので、Promiseが解決するまで次の処理に移りません。
(非同期の処理でも、reject
関数でエラーオブジェクトを返せば正常にサーバープログラム、もしくはエラープログラムに移ります)
エラープログラムの説明
第一引数
request
オブジェクト。
詳細は https://nodejs.org/api/http.html#http_class_http_incomingmessage を参照(外部ページ)。
第二引数
response
オブジェクト。
詳細は https://nodejs.org/api/http.html#http_class_http_serverresponse を参照(外部ページ)。
第三引数
エラーオブジェクト。 詳細は「エラーオブジェクトの説明」に記述してあります。
第四引数
ブーリアン値が入ります。
ブーリアン値は、サーバープログラムが既にresponse.end
関数を実行しているときにtrue
になります。していない場合はfalse
です。
(true
のときにresponse.end
関数を実行するとエラーになります)
エラーオブジェクトの説明
error = {
name: @string or @undefined
detail: @string or @undefined,
setName: [function]
setDetail: [function]
}
error.name
エラー名を入れる。
既に使っている名前
**noServerProgram**
urlと合致するサーバープログラムがないとき
**serverProgramError**
サーバープログラムにエラーがあって正常に実行出来なかったとき
error.details
エラーの説明を入れる。
error.setName( @string )
自身のエラーオブジェクトのname
プロパティに引数の文字を代入します。
引数が文字列以外の場合は代入しません。
戻り値は自身のエラーオブジェクトです。
error.setDetail( @string )
自身のエラーオブジェクトのnameDetail
に引数の文字を代入します。
引数が文字列以外の場合は代入しません。
戻り値は自身のエラーオブジェクトです。