2017-04-15 2 views
1

시작 클래스에 입/출력 포맷터를 추가 할 수있는 웹 API를 구축 중입니다. XML에서는 작동하지만 Json에서는 작동하지 않습니다. Json이 기본적으로 추가된다는 것을 알고 있지만 Accept 헤더가 지정되지 않은 경우 XML을 선택하는 것으로 보입니다..Net Core 1.1 웹 API Json 입/출력 포맷터

options.OutputFormatters.Add(new JsonOutputFormatter()); 

기본 포맷은 첫 번째가 포매터 목록에 추가됩니다 : 구성 서비스 방법에있어서

public void ConfigureServices(IServiceCollection services) 
{ 
    //Add framework services. 
    services.AddMvc(options => 
    { 
     options.RequireHttpsPermanent = true; 
     options.RespectBrowserAcceptHeader = true; 
     options.ReturnHttpNotAcceptable = true; 
     options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter()); 
     options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter()); 
    }); 

    services.AddDbContext<CustomerManagerContext>(options => 
     options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")) 
    ); 

    services.AddScoped<IUnitOfWork, UnitOfWork>(); 
} 

나는 XmlSerializer를하지만이 JSON 작동하지 않습니다 덧붙였다. XML 앞에 Json 포맷터를 추가하여 기본값이되도록하고 싶습니다. 내가 뭘 놓치고 있니? Json 포맷터를 포맷터 목록의 첫 번째 항목에 올바르게 추가하려면 어떻게해야합니까?

답변

0

요청의 Accept 헤더가 JSON 대신 XML로 설정되었다고 가정합니다. 협상은 요청의 Accept 헤더가 형식을 지정하는 경우에만 수행되고, 그렇지 않은 경우 기본값 (기본값은 JSON)이 사용되며 요청을 충족 할 수없는 경우 서버가 결정합니다.

XML을 항상 얻는다면 소비자의 요청에 XML을 요청하는 것입니다.