まだまだマイナーなライブラリでして、ソースを漁って見つけたREADMEに載ってないような隠し機能がいくつかあるので、まとめておこうと思います。参考になれば幸いです。(今後も見つければ追記するつもりです。)
aspidaとは?
TypeScriptと親和性の高いHTTPクライアントのライブラリ。
パスを文字列として持つのではなくメソッドをそれを経由するので、何が嬉しいかというと
- パスに補完が効く(うれしい!)
- 返り値の型を間違えない(うれしい!)
このメソッドを型定義ファイル郡から生成してくれるツールがaspidaです。
api定義ファイルを作る
定義ファイルの書式
- Methods
- メソッド(
get
,post
,patch
,etc)query
reqHeaders
reqBody
-
reqFormat
(reqBodyの型) resBody
- メソッド(
reqBody
interfaceとして渡すことができるほか、次の型を指定することができます:
ArrayBuffer
Blob
string
このどれか指定するとこの型のデータをそのまま送ることができます。
reqFormat
次の型を指定することができます:
ArrayBuffer
Blob
string
FormData
指定があるとjsonのかわりにこの形式でエンコードしてくれます。
よく使うinterfaceを別ファイルに置いておきたい
if (file.startsWith('$') || file.startsWith('@')) return
とあるように、$
か@
で始まるファイルは無視されるため、@types.ts
とかを作るといいです。
生成されたファイルではimportしているだけなので問題なく利用できます。
ファイルをpostしたい
aspidaは奥のXHRのライブラリにデータを受け流すだけなので、File
型を利用すればよいです。
パスパラメータの型を指定
_id@number.ts
といったファイル名にすることで型をnumberに制限できることはreadmeに書かれていますが、この他に自作型を使用することもできます。
大文字始まりの型(非プリミティブ型?)を指定することで、その型を使用できます。
この場合、定義はapis/
($api.ts
と同ディレクトリ)に@types.ts
を作成しexportする必要があります。
また、型チェックが行われていませんが、文字列の形にすることができる必要があるようです。
ビルドする
コマンドライン引数
aspidaコマンドでは--build
のほか--version
と--watch
が引数として有効です。
watchではファイル群を監視して更新があるたび自動でビルドを行ってくれます。