TypeScriptでWebAPIを実行する
TypeScriptの開発環境ができたので、とりあえずWebAPIを実行するプログラムを作ってみました。
今回はQiitaのAPIを使いました。
使用モジュール
コード
main.ts
#!/usr/bin/env node import axios from "axios"; import { Qiita } from "./qiita"; export async function main() { const res = await axios.get<Qiita[]>("https://qiita.com/api/v2/items"); console.log(res.data); return res; } if (require.main === module) { main(); }
qiita.ts
// Generated by https://quicktype.io export interface Qiita { rendered_body: string; body: string; coediting: boolean; comments_count: number; created_at: string; group: null; id: string; likes_count: number; private: boolean; reactions_count: number; tags: Tag[]; title: string; updated_at: string; url: string; user: User; page_views_count: null; } export interface Tag { name: string; versions: any[]; } export interface User { description: null | string; facebook_id: null | string; followees_count: number; followers_count: number; github_login_name: null | string; id: string; items_count: number; linkedin_id: null | string; location: null | string; name: string; organization: string | null; permanent_id: number; profile_image_url: string; team_only: boolean; twitter_screen_name: null | string; website_url: null | string; }
QiitaAPIからのレスポンスデータの型はJSONからPaste JSON as Code
というVSCodeの拡張機能で生成しました。
JSONをコピーしてコマンドを実行するだけなので楽チンです。
Paste JSON as Code - Visual Studio Marketplace
ビルド&コマンド実行設定
TypeScriptのコードをJavaScriptにトランスパイルする
npm run build
生成したJavaScriptファイルに実行権限を与える
chmod 755 dist/*
コマンド名と実行ファイルを紐付ける
package.json ※一部省略
"bin": { "qiita-cli": "dist/main.js" },
ローカルの環境でnpm packageのinstallをシミュレートする
npm link
結果
参考
https://x-team.com/blog/a-guide-to-creating-a-nodejs-command/