我正在將我的代碼從 .NET 遷移到 .NET Core 6,并且遇到了障礙,谷歌搜索似乎沒有幫助,因此歡迎任何建議和指點。
所有這些都在 .NET 中作業,因此我很清楚如何遷移 API。
我正在使用greasemonkey 腳本來抓取一些資料并將其傳遞到我的站點。
function sendHome() {
console.log(window.eval('window.PA_intel'));
GM.xmlHttpRequest({
method: "POST",
url: "https://localhost:7223/api/Parsing/Any",
data: "{ Data: '" JSON.stringify(window.eval('window.PA_intel')) "', Type: 'Intel'}",
headers: { "Content-Type": "application/json" },
onload: function (response) { console.log(response); toastr["success"]("Intel sent home!", "Phoenix"); },
onerror: function (reponse) {console.log("error: ", reponse)},
});
}
這會從頁面中獲取資料并將其推送到正在等待 api/Parsing/Any 的 API 路由
除錯和郵遞員可以觸發 API 控制器,所以我知道路由有效,但正文(來自 GM 腳本的資料和型別)沒有附帶它。
我有一個定義的模型來接收資料
public class ParseData
{
public string Data { get; set; }
public string Type { get; set; }
}
并且我的控制器設定為期望它,但在 .NET CORE 6 中它只是出現空
[Route("api/Parsing/")]
public class ParsingAPIController : Controller
{
[Route("Any")]
public List<ParseResult> ParseAny(ParseData parseData)
//public List<ParseResult> ParseAny(string Data, string Type)
{
正如我所說,正在觸發路由,但 parseData 物件為空,如果我對 ParseAny 進行檢查以查看已發送的內容,則會收到空正文錯誤。
有什么想法我哪里出錯了嗎?
uj5u.com熱心網友回復:
修復ajax資料
...
data: JSON.stringify({ Data: window.eval('window.PA_intel'), Type: 'Intel'}),
...
和一個動作標題
[Route("Any")]
public List<ParseResult> ParseAny([FromBody]ParseData parseData)
uj5u.com熱心網友回復:
您可以嘗試將標簽 [FromBody] 與 ParseData 引數一起使用。
uj5u.com熱心網友回復:
其實你需要做兩件事:
將 [ParseBody] 添加到您的引數中。
將 [HttpPost] 作為注釋添加到您的方法中,以便它接受發布請求并獲取請求中的帖子正文。最后,您的代碼應如下所示:
[Route("api/Parsing/")] public class ParsingAPIController : Controller { [Route("Any")] [HttpPost] public List<ParseResult> ParseAny([FromBody]ParseData parseData) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498267.html
