首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个呼叫中使用两种不同的内容类型

在一个呼叫中使用两种不同的内容类型
EN

Stack Overflow用户
提问于 2019-06-05 00:57:34
回答 1查看 97关注 0票数 0

我正在向api发布一个具有两个不同参数的对象,每个参数都需要一个不同的'Content-Type',第一个参数- groups应该具有以下'Content-Type'

代码语言:javascript
复制
'Content-Type': 'application/json',

第二个是:

代码语言:javascript
复制
'Content-Type': 'multipart/form-data'

有没有可能为同一篇文章设置两种不同内容类型的标题?

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

工单对象:

代码语言:javascript
复制
public class ticket
    {
        [FromBodyAttribute] public Grouping groups { get; set; }
        public IEnumerable<IFormFile> files { get; set; }
    }

ApiPost:

代码语言:javascript
复制
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);
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 14:28:15

不,这是不可能的,即使您添加了两个Content-Type头,content body也只能是一种类型。但是没有什么可以阻止您在表单数据中将Grouping groups作为json字符串传递。

代码语言:javascript
复制
const data = new FormData();
data.append('files', /* all your files */)
data.append('groups', JSON.stringify(groupsObject))

apiFetch(url, { method: 'post', data })
代码语言:javascript
复制
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字符串,您必须在上面所示的操作方法中显式地进行反序列化,或者使用自定义模型绑定器进行反序列化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56448315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档