簡體   English   中英

如何使用ASP.Net Web API創建接受請求正文中任何內容類型的終結點

[英]How to create an endpoint that accepts any content type in the request body using ASP.Net Web API

我想創建一個通用的API端點,客戶端可以將文本或文件數據發布到該端點,而我們不知道數據的內容/媒體類型。 似乎該框架要求為HTTP頭中傳遞的任何內容類型指定一個內容格式化程序,否則會引發錯誤。 我不想為我們可能接受的每種可能的媒體類型定義一個格式化程序,因為我們尚不知道它們可能包含的內容。

有沒有一種方法可以用通用媒體類型格式化程序定義端點,或者根本不指定端點? 如果我將通用對象用作方法參數,似乎並不介意,但是該框架一直困擾着沒有格式化程序就無法處理媒體類型。

我們實際上並不需要能夠處理這些數據,而只是存儲它(用於消息傳遞系統)。

附帶說明一下,我寧願將此數據作為請求正文的原始內容接收,而不是使用多部分表單請求,但是如果這樣做更有意義,則可以選擇。

您可以自己閱讀內容,從而完全繞過格式化程序。 這是一個例子:

public async Task Post()
{
    string content = await Request.Content.ReadAsStringAsync();
    // Store away the content
}

這根本不需要您使用或定義任何格式化程序。

或者,如果您想比Youssef的建議低得多,也可以做。

public Task<HttpResponseMessage> Post(HttpRequestMessage request) {

   var stream = await request.Content.ReadAsStreamAsync();

   return new HttpResponseMessage(HttpStatusCode.Ok) { RequestMessage = request } ;
}

暫無
暫無

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

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