Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

217
Views
¿Cómo definir el punto final de la función Netlify como POST?

Soy nuevo en serverless y estoy tratando de entenderlo. Así que he creado una función en netlify usando GET y funciona bien.

Luego, quería un punto final POST , así que seguí el mismo formato y creé una función similar. Pero luego envié una solicitud POST a esta nueva función. Al revisar console.log en el servidor, me doy cuenta de que se lee como una solicitud con un método GET (httpMethod: 'GET'). Y luego me di cuenta de que no había definido el método de punto final que habría hecho en un servidor normal.

Pero no tengo idea de cómo hacer eso.

Pregunta

¿Hay alguna forma diferente de hacer una función GET y una función POST en netlify o sin servidor?

Si la respuesta es Sí, entonces por favor guíeme en esto.

Si la respuesta es No, y las funciones están escritas de la misma manera, ¿alguien puede decirme por qué netlify lee mi solicitud POST como GET ?

Aquí está el código de la función en codesandbox .. https://codesandbox.io/s/serverless-function-2xebuf?file=/src/index.js

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Publicar la respuesta a esto para que me sirva como recordatorio y si ayuda a alguien en el futuro que tenga problemas similares.

Gracias a @alessiopremoli por compartir que no se puede definir explícitamente a qué verbo debe responder el controlador de función ... eso respondió a mi primera pregunta: ¿Hay alguna forma diferente de hacer una función GET y una función POST en netlify o sin servidor?

El segundo problema al que me enfrenté fue que mi solicitud POST estaba siendo leída por netlify como GET ... Me di cuenta de cuál era el problema... hay una configuración para las reglas de redirección en el archivo netlify.toml que simplifica la URL a la API... puede escribir "site.com/api/functionName.js" en lugar de "site.com/.netlify/functions/functionName.js"

 [[redirects]] from = "/*" to = "/blog/:splat"

y estaba usando esto para mis rutas api como

 [[redirects]] from="/api/*" to="/.netlify/functions/:splat"

para simplificar el acceso a mi ruta api... pero no me di cuenta de que, de manera predeterminada, el código de estado para esta redirección es 301, lo que cambia el método a GET y esto también cambia el método de mi solicitud. Entonces, para aquellos que enfrentan este problema, espero que esto ayude.

Si se trata de una solicitud POST y está utilizando una opción de redirección, asegúrese de agregar el estado de 200 o simplemente llame a la función utilizando la ruta predeterminada que ha establecido, por ejemplo, "site.com/.netlify/functions/functionName.js"

Entonces, cambiar la regla de redirección a la que se muestra a continuación solucionó el problema para mí

 [[redirects]] from="/api/*" to="/.netlify/functions/:splat" status=200

Aquí está el enlace al equipo de soporte de netlify que ayudó a resolver este problema que lo explica mejor ( https://answers.netlify.com/t/does-using-the-redirects-route-to-a-function-call-change- el-método-de-la-solicitud-desde-post-to-get/55760/5 )

about 4 years ago · Juan Pablo Isaza Report

0

Según mi experiencia, no puede definir explícitamente a qué verbo debe responder el controlador de función, generalmente configuro una verificación en el verbo de evento:

 if (event.httpMethod !== 'POST') { return { statusCode: 501, body: JSON.stringify({ message: "Not Implemented" }), headers: { 'content-type': 'application/json' } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!