C# to Javascript: What the equivalent of `new MultipartFormD



我有这个遗留的C#代码(我不懂C#(,我需要用Javascript编写相同的功能(我非常了解JS(。所以 C# 代码是:

static JavaScriptSerializer serializer = new JavaScriptSerializer();
MultipartFormDataContent content = new MultipartFormDataContent();
item item_1 = new item
{
a = 'a',
b = 'b'
};
string jsonPayload = serializer.Serialize(item_1);
var stringContent = new StringContent(jsonPayload);
stringContent.Headers.ContentType.MediaType = "text/json";
content.Add(stringContent, item_1.GetType().Name);
// then it makes a network request

如果我必须做出最好的猜测,这就是我认为它会在 JS 中做的事情,尽管我必须有点不对劲,因为 api 返回 415 不支持的媒体类型:

const item_1 = {
a: 'a',
b: 'b'
}; 
const jsonPayload = JSON.stringify(item_1); 
const formData = new FormData(); 
formData.set('data', jsonPayload); 
fetch('/some_api/endpoint',{
headers: {
"Content-Type":"text/json"
},
method: 'POST',
body: formData
});

如果您需要更多信息,或对如何改进帖子有疑问或建议,请发表评论!感谢您的帮助!

为什么要创建 FormData 对象?我认为您只想将内容作为 JSON 发送;

const item_1 = {
a: 'a',
b: 'b'
}; 
const jsonPayload = JSON.stringify(item_1); 
fetch('/some_api/endpoint',{
headers: {
"Content-Type":"text/json"
},
method: 'POST',
body: jsonPayload 
});

从此文档页面 (https://developer.mozilla.org/en-US/docs/Web/API/FormData( 来看,似乎不是 JSON 内容类型;

它使用的格式与表单使用的格式相同,如果编码类型为 设置为"多部分/表单数据"。

如果我没记错的话,内容类型是多部分/表单数据;但是,有一个问题。

表单数据内容类型的末尾有一个边界。

我的同事所做的只是不定义内容类型并让它自动确定。这样它就会有正确的边界。

另一方面。如果您只发送 JSON;然后,如果可能的话,您不应该使用表单数据;但是,而是JSON。仅当您尝试发送多种类型的数据时,才真正需要表单数据。例如同时出现文本和图像。

最新更新