npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

usehttprequest

v1.0.10

Published

Un hook de React para hacer llamadas a APIs de manera sencilla y eficiente.

Downloads

93

Readme

hooks-images licence Badge en Desarollo npm downloads commit npm GitHub release

Actualizaciones & Funcionalidades

Ver los cambios realizados en el Hook CHANGELOG

  • Conoce las mejoras y cambios en la funcionalidad del Hook FUNCTIONALITY

Hook useHttpRequest ✍🏻

Instalacion

npm i usehttprequest

Importacion

  import { useHttpRequest } from "usehttprequest";

Actualización

npm update usehttprequest

Caracteristicas

  • Sencillo y fácil de usar: useHttpRequest es increíblemente fácil de integrar en tus proyectos de React. Simplemente importa el hook y comienza a utilizarlo en tus componentes.
  • Soporte para múltiples métodos HTTP: useHttpRequest admite los métodos HTTP más comunes, como GET, POST, PUT y DELETE, para que puedas realizar solicitudes HTTP de manera sencilla y segura.
  • Personalizable: useHttpRequest te permite personalizar la solicitud HTTP según tus necesidades específicas, incluyendo la configuración de headers y el tipo de contenido.
  • Gestión de errores: useHttpRequest maneja automáticamente los errores de solicitud HTTP, lo que te permite mostrar mensajes de error personalizados al usuario.
  • Compatible con React: useHttpRequest es compatible con todas las versiones de React, desde la 16.8 en adelante.
  • Compatibilidad con Variables de Entorno: Obtén automáticamente la URL de la API desde variables de entorno, simplificando la configuración en diferentes entornos.
  • Parámetros de Consulta: Ahora puedes enviar parámetros de consulta en tus llamadas a la API, facilitando la filtración y paginación de datos.
  • Implementación de Protección CSRF: Hemos agregado soporte para la protección contra CSRF (Cross-Site Request Forgery). Ahora puedes activar la protección CSRF al utilizar el hook, asegurando que tus solicitudes HTTP sean más seguras. Simplemente pasa enableCSRF=true al usar el hook para habilitar esta funcionalidad. El hook ahora incluye automáticamente el token CSRF en las solicitudes que modifican datos (POST, PUT, DELETE), lo que ayuda a prevenir ataques maliciosos.
  • Monitoreo con Sentry: Hemos integrado Sentry para capturar excepciones y eventos en nuestra aplicación. Esto permite monitorear errores en tiempo real y facilita la identificación y resolución de problemas en producción. Cualquier error no manejado se enviará automáticamente a Sentry, proporcionando contexto detallado para mejorar la estabilidad de la aplicación.
  • Registro con loglevel: Hemos añadido loglevel para registrar mensajes en niveles de severidad como info, warn y error. Esta herramienta ligera mejora la depuración al permitir rastrear advertencias y errores durante la ejecución. Su configuración flexible permite filtrar mensajes según el entorno, optimizando la salida de la consola.
  • Experiencia de Usuario Optimizada: Hemos implementado un ajuste dinámico del retraso del estado de carga (isLoading) en función de la calidad de la conexión del usuario. Esto adapta el tiempo de espera a diferentes tipos de conexión, como slow-2g, 2g, 3g y 4g, evitando cambios de estado confusos. Si no se puede determinar la conexión, se utiliza un valor predeterminado, asegurando una experiencia de usuario fluida.

Procedimientos del Hook useRequest:

const { apiCall, apiResponse, userFound } = useHttpRequest();

tiene 3 parametros que puedes llamar que son por defecto:

  • apiCall:
    • Endpoint:
      • Es para usar los Endpoint de la base de datos y se usa "crear" en ves de "/crear"
    • Id:
      • en este caso el Id es para el uso de parametros y es para detectar el id del array o mas bien de indice de la base de datos v1/api/${id}
    • Data:
      • fue creado especialmente para usar lo datos que tenga los valores del formulario o algun otro que se le sea necesario, por ejemplo:
        • const [user, setUsers] = useHttpRequest({nombre: "", apellido: ""}) y se reemplaza data por user
    • Method:
      • es especialmente para asignar metodos HTTP como:
        • GET,
        • POST,
        • PUT,
        • DELETE,
    • Http:
      • Fue creado especialmente para reducir codigo y es para usar
        • application/json,
        • application/x-www-form-urlencoded,
        • multipart/form-data,
        • text/plain,
        • application/xml,
  • Resultado:
    • apiCall('users', 1, target", 'post', 'application/json', { page: 1, limit: 10 }); 👇🏻
      • apiCall(endpoint, id, data, method, http, params); de esta manera seria el resultado

Destacado:

  • apiCall: Es la funcion para llamar el Hook.
  • apiResponse: Se encarga de Enviar y Recibir solicitudes de la Base de Dato message.
  • userFount: Se encarga de verificar si existe o no Bool.
  • useHttpRequest: Se puede utilizar para React como para Vite.
  • useHttpRequest: Ya tiene las dependencias sentry/tracing, sentry/react, axios instaladas.
  • Protección CSRF: useHttpRequest(true) para activar las protecciones, false por defecto.
  • Nuevos parametros: isLoading, SentryWarning, SentryError, SentryInfo, SentryEvent.

Codigo de Ejemplo:

POST - Nuevo 🆕

const UserList = () => {
  const { apiCall, apiResponse, userFound } = useHttpRequest(true); // al cambiarlo de false que es por defecto a true se activara automaticamente la proteccion CSRF

  const fetchUsers = async () => {
    try {
      await apiCall('/users', 1, target", 'post', 'application/json', { page: 1, limit: 10 });
      if (userFound) {
        console.log('Usuarios encontrados:', apiResponse);
      }
    } catch (error) {
      console.error('Error al hacer la llamada a la API:', error);
    }
  };

  useEffect(() => {
    fetchUsers();
  }, []);

  return (
    <div>
      <h1>Lista de Usuarios</h1>
      {userFound && apiResponse && Array.isArray(apiResponse) ? (
        <ul>
          {apiResponse.map(user => (
            <li key={user.id}>{user.nombre} {user.apellido}</li>
          ))}
        </ul>
      ) : (
        <p>No se encontraron usuarios.</p>
      )}
    </div>
  );
};

export default UserList;

GET

const Peticiones = () => {
  const { apiCall, apiResponse, userFound } = useHttpRequest({});

  useEffect(() => {
    const fetchData = async () => {
      await apiCall(
        "registrados",
        undefined,
        undefined,
        "get",
        "application/json"
      );
    };
    fetchData();
  });

  return (
    <>
      {userFound && Array.isArray(apiResponse) ? (
        apiResponse.map((user) => (
          <li key={user.id}>
            {user.nombre} {user.apellido}
          </li>
        ))
      ) : (
        <p>Loading or error...</p>
      )}
    </>
  );
};

Otro ejemplo:

const MyComponent = () => {
  const { apiCall, apiResponse, userFound } = useHttpRequest();

  const handleSubmit = async () => {
    await apiCall(
      "users",
      1,
      { name: "John Doe", email: "[email protected]" },
      "post",
      "application/json"
    );
    if (userFound) {
      console.log("Usuario creado con éxito:", apiResponse);
    } else {
      console.error("Error al crear el usuario:", apiResponse);
    }
  };

  return (
    <div>
      <button onClick={handleSubmit}>Crear usuario</button>
    </div>
  );
};

🚨 Nuevas versiones y Actualizaciones Proximamente 🚨

Màs sobre la Funcionalidad del HOOK 👉🏻 FUNCTIONALITY 👈🏻

No te pierdas las ultimas versiones 👉🏻 CHANGELOG 👈🏻