簡體   English   中英

一次通話有兩種不同的內容類型

[英]Two different content types on one call

我將具有兩個不同參數的對象發布到api,每個參數需要一個不同的'Content-Type' ,第一個參數groups應具有以下'Content-Type'

'Content-Type': 'application/json',

第二個:

'Content-Type': 'multipart/form-data'

是否可以為同一帖子設置具有兩種不同內容類型的標題?

const { result } = apiPost(`api/emails/attachments?request=${request}&ticketId=${ticketId}`, data, {
      headers: { 'Content-Type': 'multipart/form-data' },
    });
  };

票證對象:

public class ticket
    {
        [FromBodyAttribute] public Grouping groups { get; set; }
        public IEnumerable<IFormFile> files { get; set; }
    }

ApiPost:

export const apiFetch: <T>(url: string, options?: object) => Promise<T> = (
  url: string,
  options: object,
) => adalFetch(authContext, adalConfig.endpoints.api, axios, url, options);

export const apiPost = async <T>(url: string, data: object, headers: object): Promise<T> => {
  const options = {
    method: 'post',
    data,
    config: {
      headers: headers || {
        'Content-Type': 'application/json',
      },
    },
  };
  console.log(data);
  console.log(options);
  return apiFetch(url, options);
};

不,即使添加兩個Content-Type標頭,內容主體也只能是一種類型。 但是沒有什么阻止您將Grouping groups作為json字符串傳遞到表單數據中。

const data = new FormData();
data.append('files', /* all your files */)
data.append('groups', JSON.stringify(groupsObject))

apiFetch(url, { method: 'post', data })
public class Ticket
{
  public string groups { get; set; } // <-- Try 'Grouping' as well, may work
  public IEnumerable<IFormFile> files { get; set; }
}

public IActionResult Action(Ticket ticket) {
 var groups = JsonConvert.DeserializeObject<Grouping>(ticket.groups);
}

據我所知,模型綁定不會在表單數據綁定內反序列化json字符串,您將必須在上述操作方法中或使用自定義模型綁定器來顯式地執行它。

暫無
暫無

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

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