Paso de carga útil en la solicitud GET no funciona

Estoy usando la API de otra persona y desafortunadamente configurar una solicitud de GET para enviar datos a la búsqueda de una cadena y recuperar una lista de objetos con algunas oraciones que coinciden con la cadena.

Ahora tengo que usarlo para la parte en la que estoy trabajando en el proyecto.

En Postman cuando hago un GET solicitud con el siguiente formato como JSON object:

enter image description here

Regreso los siguientes datos en el BODY que muestra que funciona:

{
    "data": [
        {
            "Score": 0.0980088697361664,
            "Title": "Anushka Avni International (AAI) takes pleasure in presenting itself as one of the renowned Suppliers and Exporter. We have huge assortment of agro products available with us. We feel proud when buyers come to us recognizing the standard quality which we offer in the world wide market."
        },
        {
            "Score": 0.08126642849224107,
            "Title": "About Us Anushka Avni International (AAI) takes pleasure in presenting itself as one of the renowned Suppliers and Exporter. We have huge assortment of agro products available with us. We feel proud when buyers come to us recognizing the standard quality which we offer in the world wide market. We follow the best practices while supplying… Read More.."
        },
        {
            "Score": 0.0,
            "Title": "Minor Fire at Vent Line Outlet of Degassing Tank On 2nd January 2019 at 1120 HRS, a minor fire occurred at Ammonia Plant, whereby gas vented out to the atmosphere (at elevated position) through the vent line of degassing tank caught fire. ERT Tier 1 was activated. Fire was put off by isolating all sources to the unit, introduced nitrogen and applied snuffing steam."
        },
        {
            "Score": 0.0,
            "Title": "Minor Accident at Main Guard House, Asean Bintulu Fertilizer (ABF) Sdn Bhd, Sarawak. While queuing up behind a turnstile barrier on the way exiting the Main Guard House, a reversing van knocked a stationary motorcycle that waiting behind the van causing the motorcycle and motorcyclist fell down. There was no injury except a slight damaged to the motorcycle."
        },
        {
            "Score": 0.0,
            "Title": "Contractors Suffered Minor Injury at Asean Bintulu Fertilizer (ABF) Sdn Bhd, Bintulu Sarawak Two (2) contractors (Injured Person-IP) were doing tree cutting using sky lift. While lowering the sky lift jib to lower work area, the sky lift jib suddenly snapped and fell onto the ground causing minor injury to the contractors. One (1) IP bruised his arm while the other IP suffered superficial cut on his shin. Incident was classified as First Aid Case and to be investigated as per normal investigation process."
        }
    ]
}

I referenced esta pregunta y encontró una manera de enviar la cadena como una consulta usando una solicitud de GET.

  const getDescription = async (string) => {
    const response = await fetch("/rank/" + string, {
      method: "GET",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
      },
    });
    console.log(response);
  };

  useEffect(() => {
    getDescription("hello");
  }, []);

Pero estoy recibiendo un 404 Error:

Response
​
body: ReadableStream { locked: false }
​
bodyUsed: false
​
headers: Headers {  }
​
ok: false
​
redirected: false
​
status: 404
​
statusText: "NOT FOUND"
​
type: "basic"
​
url: "http://localhost:3000/rank/hello"

¿Cómo conseguiría que esto funcionara si es posible?

Editar:Yo recurrí a hacer que la otra persona crear una solicitud POST en su lugar.

Pregunta hecha hace 3 años, 4 meses, 27 días - Por htmlhelix


2 Respuestas:

  • El error 404 que estás recibiendo indica que la solicitud GET realizada a la URL "http://localhost:3000/rank/hello" no se encontró en el servidor. Puede haber varias razones por las que estás recibiendo este error:

    • Ruta incorrecta en la URL: Verifica que la ruta "/rank/" seguida de la cadena que estás enviando como parámetro esté configurada correctamente en el servidor donde se está realizando la solicitud. Asegúrate de que la ruta exista y esté manejada adecuadamente en el servidor.
    • Configuración de CORS: Puede ser que el servidor esté restringiendo las solicitudes CORS (Cross-Origin Resource Sharing) y la solicitud GET no esté siendo permitida. Asegúrate de que el servidor permita las solicitudes CORS desde tu origen.
    • Problemas de red: Verifica que el servidor esté en funcionamiento y que la conexión a la red sea estable. También verifica que estás apuntando al servidor correcto en la URL.

    Te recomendaría revisar estos puntos para solucionar el error 404 en tu solicitud GET. También te sugiero que revises los logs del servidor para obtener más información sobre el motivo específico del error.

    Respondida el Dec 20, 2020 a las 10:49 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Parece que estás intentando pasar datos como carga útil en una solicitud GET, lo cual no es estándar. Los datos de carga útil generalmente se envían en solicitudes POST o PUT.

    HTTP GET está diseñado para recuperar datos, mientras que POST y PUT están diseñados para crear o actualizar datos. Cuando envías datos en una solicitud GET como una consulta de cadena, como en tu código, el servidor puede tratarla como un parámetro de consulta en lugar de una carga útil. Esto podría provocar errores 404 si el servidor no espera que se pasen datos de esa manera.

    Dado que el servidor espera recibir datos de carga útil en una solicitud POST, te recomiendo que cambies tu código para utilizar una solicitud POST en su lugar. Aquí tienes un ejemplo de cómo podrías hacerlo usando fetch:

    javascript
    const getDescription = async (string) => {
      const response = await fetch("/rank", {
        method: "POST",
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ string }),
      });
      console.log(response);
    };
    
    useEffect(() => {
      getDescription("hello");
    }, []);
    

    Al utilizar una solicitud POST, envías los datos en el cuerpo de la solicitud en lugar de como una consulta de cadena. Esto debería resolver el error 404 y permitirte enviar correctamente la cadena de búsqueda al servidor.

    Respondida el Dec 20, 2020 a las 10:56 - por Gemini

    Votos positivos: 0 | Votos negativos: 0