@bryanochoa/custom-fetch-api 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -4
- package/dist/index.mjs +9 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -88,7 +88,10 @@ const data = await fetcher.delete("data/1");
|
|
|
88
88
|
## Manejo del token
|
|
89
89
|
|
|
90
90
|
En este nuevo enfoque al ser una instancia de una clase, cuenta con metodos para colocar o remover el token en la peticion http se configura de la siguiente forma. Puedes configurar la persistencia del token en localStorage o sessionStorage desde la instancia de la clase y asi no tener que colocarlo en cada peticion donde tengas que colocar el token, esta configuracion es opcional,si no la configuras en este punto puedes hacerlo desde el metodo de la instancia setToken() su segundo parametro es un objeto de configuracion que te permite configurar la persistencia del token en localStorage o sessionStorage, si no lo configuras el token se colocara en la peticion pero no se guardara en ningun lado y tendras que colocarlo en cada peticion donde sea necesario.
|
|
91
|
-
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
import {CustomFetchAPI} from "@bryanochoa/custom-fetch-api"
|
|
94
|
+
|
|
92
95
|
const fetcher = new CustomFetchAPI({
|
|
93
96
|
baseUrl: "https://api.example.com",
|
|
94
97
|
// safeTokenOn:{
|
|
@@ -106,15 +109,16 @@ keyname:"token"
|
|
|
106
109
|
fetcher.removeToken()
|
|
107
110
|
|
|
108
111
|
```
|
|
109
|
-
|
|
112
|
+
|
|
113
|
+
En esta nueva implementación del manejo del token, te permite configurar la persistencia del token ya sea en local storage o en session storage una vez colocado el token intento emular el comportamiento de axios con los interceptores, al mandar el token si existe en todas las peticiones mediante el header de Authorization todo eso lo hace automaticamente ya que es el caso mas común de enviar el token en una api.
|
|
110
114
|
|
|
111
115
|
En conclusión, esta nueva versión de la librería ofrece una forma más estructurada y flexible de realizar solicitudes HTTP, con un manejo más eficiente del token de autenticación y una interfaz más clara para interactuar con APIs externas.
|
|
112
116
|
|
|
113
117
|
## ¿Y entonces, que enfoque deberia elegir?
|
|
114
118
|
|
|
115
|
-
Ten encuenta que la primera versión esta enfocada en realizar peticiones HTTP ya sea desde el frontend
|
|
119
|
+
Ten encuenta que la primera versión esta enfocada en realizar peticiones HTTP ya sea desde el frontend o el backend (en versiones de nodejs que ya soporten el fetch api) y en esta nueva implementación el enfoque incluye la persistencia del token mediante localStorage o sessionStorage, por lo que si tu proyecto requiere de esta funcionalidad te recomiendo utilizar la segunda versión, en caso contrario puedes seguir utilizando la primera versión que igual seguirá recibiendo soporte y mejoras hasta donde la logica y el fetch api nativo me lo permita.
|
|
116
120
|
|
|
117
|
-
## Versión 1 función
|
|
121
|
+
## Versión 1 función makeApiRequest()
|
|
118
122
|
|
|
119
123
|
- Ejemplo de uso
|
|
120
124
|
|
|
@@ -211,4 +215,7 @@ Por ultimo, se puede cambiar el content-type de la solicitud HTTP, por defecto s
|
|
|
211
215
|
No lo mencione en ejemplos anteriores pero por defecto, las peticiones de tipo POST,PUT,PATCH la propiedad body se convierte automáticamente a JSON por ende es obligatorio que para esta propiedad se pase un objeto, de lo contrario la petición fallara.
|
|
212
216
|
|
|
213
217
|
El proyecto se encuentra en constante desarrollo y se espera que se agreguen más funcionalidades y mejoras en el futuro.
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
|
|
214
221
|
```
|
package/dist/index.mjs
CHANGED
|
@@ -37,33 +37,38 @@ var CustomFetchAPI = class {
|
|
|
37
37
|
}
|
|
38
38
|
async get(url, searchParams) {
|
|
39
39
|
this.verifyTokenWereSet();
|
|
40
|
+
this.optionRequest.method = "GET";
|
|
41
|
+
if (this.optionRequest.body) this.optionRequest.body = void 0;
|
|
42
|
+
if (this.headers.has("Content-Type")) this.headers.delete("Content-Type");
|
|
40
43
|
const finalUrl = this.setParams(url, { searchParams });
|
|
41
44
|
return await (await fetch(finalUrl, this.optionRequest)).json();
|
|
42
45
|
}
|
|
43
|
-
async post(url, { searchParams, body, contentType }) {
|
|
46
|
+
async post(url, { searchParams, body, contentType = "application/json" }) {
|
|
44
47
|
this.verifyTokenWereSet();
|
|
45
48
|
this.optionRequest.method = "POST";
|
|
46
49
|
this.setBody(body, contentType);
|
|
47
|
-
const finalUrl = this.setParams(url, searchParams);
|
|
50
|
+
const finalUrl = this.setParams(url, { searchParams });
|
|
48
51
|
return await (await fetch(finalUrl, this.optionRequest)).json();
|
|
49
52
|
}
|
|
50
53
|
async put(url, { searchParams, body, contentType }) {
|
|
51
54
|
this.verifyTokenWereSet();
|
|
52
55
|
this.optionRequest.method = "PUT";
|
|
53
56
|
this.setBody(body, contentType);
|
|
54
|
-
const finalUrl = this.setParams(url, searchParams);
|
|
57
|
+
const finalUrl = this.setParams(url, { searchParams });
|
|
55
58
|
return await (await fetch(finalUrl, this.optionRequest)).json();
|
|
56
59
|
}
|
|
57
60
|
async patch(url, { searchParams, body, contentType }) {
|
|
58
61
|
this.verifyTokenWereSet();
|
|
59
62
|
this.optionRequest.method = "PATCH";
|
|
60
63
|
this.setBody(body, contentType);
|
|
61
|
-
const finalUrl = this.setParams(url, searchParams);
|
|
64
|
+
const finalUrl = this.setParams(url, { searchParams });
|
|
62
65
|
return await (await fetch(finalUrl, this.optionRequest)).json();
|
|
63
66
|
}
|
|
64
67
|
async delete(url) {
|
|
65
68
|
this.verifyTokenWereSet();
|
|
66
69
|
this.optionRequest.method = "DELETE";
|
|
70
|
+
if (this.optionRequest.body) this.optionRequest.body = void 0;
|
|
71
|
+
if (this.headers.has("Content-Type")) this.headers.delete("Content-Type");
|
|
67
72
|
const uri = this.baseUrl ? `${this.baseUrl}${url}` : url;
|
|
68
73
|
return await (await fetch(uri, this.optionRequest)).json();
|
|
69
74
|
}
|