¿Cómo publico datos de formulario con fetch api?

Mi código:

fetch("api/xxx", {
    body: new FormData(document.getElementById("form")),
    headers: {
        "Content-Type": "application/x-www-form-urlencoded",
        // "Content-Type": "multipart/form-data",
    },
    method: "post",
}

Traté de publicar mi formulario usando fetch api, y el cuerpo que envía es como:

-----------------------------114782935826962
Content-Disposition: form-data; name="email"

[email protected]
-----------------------------114782935826962
Content-Disposition: form-data; name="password"

pw
-----------------------------114782935826962--

(No sé por qué el número en el límite cambia cada vez que envía ...)

Me gustaría enviar los datos con "Content-Type": "application / x-www-form-urlencoded", ¿qué debo hacer? O si solo tengo que lidiar con eso, ¿cómo decodifico los datos en mi controlador?

A quien responda mi pregunta, sé que puedo hacerlo con:

fetch("api/xxx", {
    body: "[email protected]&password=pw",
    headers: {
        "Content-Type": "application/x-www-form-urlencoded",
    },
    method: "post",
}

Lo que quiero es algo como $ ("# form"). Serialize () en jQuery (sin usar jQuery) o la forma de decodificar mulitpart / form-data en el controlador. Gracias por tus respuestas sin embargo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta