Appearance
π Best Practices β
ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ middleware Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ β
ts
import { HttpClient } from "requestify.js";
// Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ Π±Π°Π·ΠΎΠ²ΡΠΌ URL
const $api = new HttpClient({
baseUrl: "https://jsonplaceholder.typicode.com",
})
// Middleware Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° Π² JSON
.registerMiddleware({
name: "json",
after: async (res: Response) => {
return res.json() as Promise<unknown>;
},
})
// Middleware Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ· snake_case Π² camelCase
.registerMiddleware({
name: "camelCase",
after: (data: unknown) =>
snakeToCamelCase(data as Record<string, any>) as unknown,
})
// Middleware Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΠΊΠ°ΠΊ Ρ axios
.registerMiddleware({
name: "axios data structured",
after: (data) => {
return { data, ok: true };
},
});
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
const response = await $api.get<{ data: UserCamel[]; ok: boolean }>("/users");
// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ middleware ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ
$api.removeMiddleware("axios data structured");
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΡ registerMiddleware Π΄Π»Ρ ΠΏΠΎΡΡΠ°ΠΏΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
- ΠΠ»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄
copy()
. - Π£Π΄Π°Π»ΡΠΉΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ middleware Ρ ΠΏΠΎΠΌΠΎΡΡΡ
removeMiddleware
. - ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄Π»Ρ Π²Π°Ρ ΡΠΎΡΠΌΠ°Ρ ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ middleware.
Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ middleware β
ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ defineMiddleware
:
ts
import { defineMiddleware } from "../src/utility";
// Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΈΠΌΡ middleware Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
const AUTO_JSON_MIDDLEWARE = "autoJson";
// ΠΡΠΈΠΌΠ΅Ρ: middleware, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΎΡΠ²Π΅Ρ Π² JSON
const autoJson = defineMiddleware<Response, unknown>({
name: AUTO_JSON_MIDDLEWARE,
after: async (res) => res.json(),
});
// ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ HttpClient
const client = new HttpClient().registerMiddleware(autoJson);
const result = await client.get<unknown>("https://example.com/data");
// result Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°ΡΠΏΠ°ΡΡΠ΅Π½Π½ΡΠ΅ JSON-Π΄Π°Π½Π½ΡΠ΅
// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ middleware ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ
client.removeMiddleware(AUTO_JSON_MIDDLEWARE);
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
- Π―Π²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π²Ρ ΠΎΠ΄Π° ΠΈ Π²ΡΡ ΠΎΠ΄Π° middleware
- IDE ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΏΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ
- ΠΠ΅Π½ΡΡΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ
- Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ middleware ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈΠ·Π±Π΅Π³Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ