簡體   English   中英

C# 到 Javascript:相當於`new MultipartFormDataContent();`

[英]C# to Javascript: What the equivalent of `new MultipartFormDataContent();`

我有這個遺留的 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 Unsupported Media Type:

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 內容類型;

如果編碼類型設置為“multipart/form-data”,它使用與表單相同的格式。

如果我沒記錯的話,Content-Type 是多部分/表單數據; 然而,有一個問題。

表單數據內容類型在其末尾有一個邊界。

我的同事所做的就是不定義 Content-Type 並讓它自動確定。 這樣它就會有正確的邊界。

另一個注意事項。 如果您只發送 JSON; 那么,如果可能的話,你不應該使用表單數據; 但是,而是json。 只有當您嘗試發送多種類型的數據時,才真正需要表單數據。 例如文本和圖像同時存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM