Stories

Detail Return Return

class-fetch:一個用 TypeScript 編寫的優雅的 HTTP 客户端庫 - Stories Detail

你是否想要用 TypeScript 編寫更安全,更可靠,更簡潔的 HTTP 客户端代碼?如果你的答案是肯定的,那麼你一定會喜歡 class-fetch 這個庫。

class-fetch 是一個用 TypeScript 編寫的 js 庫,用於生成 HTTP 客户端。它基於 fetch,支持瀏覽器和 nodejs 運行時。它使用裝飾器來簡化請求參數和返回值的處理。它使用 class-transformer 和 class-validator 來實現數據轉換和驗證。它具有豐富的類型約束。它受到 WebApiClient 的啓發。

class-fetch 的目標是讓我們在使用 fetch 時能夠對請求結果進行類型轉換和校驗,保持我們整體代碼的類型安全性。這是非常重要的,因為類型錯誤或不匹配可能會導致程序崩潰或數據丟失。而使用 TypeScript 可以幫助我們在編譯時就發現並避免這些錯誤,提高代碼的質量和效率。

要使用 class-fetch,只需要使用一些裝飾器來定義一個類,然後使用 build 函數來創建一個實例,就可以調用類中的方法來發起請求了。例如,下面的代碼展示瞭如何使用 class-fetch 來獲取一個博客文章的信息:

import { Fetch, Get, Param, ReturnType, autoImplement, build, t, } from "class-fetch";

class Posts {
  public id!: number;
  public title!: string;
  public body!: string;
  public userId: number;
}

@Fetch("https://jsonplaceholder.typicode.com/posts")
class Foo {
  @Get(t`${"id"}`)
  @ReturnType(Posts)
  public get(@Param("id") id: string): Promise<Posts> {
    autoImplement();
  }
}

const foo = build(Foo);

(async () => {
  console.log(await foo.get("7")); // get https://jsonplaceholder.typicode.com/posts/7
})();

可以看到,使用 class-fetch 可以讓我們用很少的代碼就實現一個完整的 HTTP 客户端,內部利用了 class-transformer 和 class-validator 來保證返回值類型的正確性和一致性。這樣可以大大減少我們編寫和維護代碼的時間和成本。

class-fetch 是一個強大而靈活的庫,可以幫助你快速地創建 HTTP 客户端,並享受 TypeScript 的類型檢查和提示。雖然這個庫還是一個非常初級的版本,還有很多功能和測試需要完善,但是我也非常感謝你閲讀了我的文章,希望你對 class-fetch 這個庫有了一些瞭解和興趣。

如果你在使用這個庫時遇到了任何問題或異常,請不要猶豫,隨時聯繫我或者在 GitHub 上提出 issue。我會盡快修復並更新這個庫。

如果你對這個庫感興趣,可以訪問它的 GitHub 地址 來了解更多信息或者提出問題和建議。

Add a new Comments

Some HTML is okay.