我的 .Net Core API 中有以下類/控制器:
public class Tester
{
public string Word1 { get; set; }
public string Word2 { get; set; }
public string Word3 { get; set; }
}
[Route("/users")]
[ApiController]
public class UserController : AController<User, IUserRepository>
{
[Authorize]
[HttpPost("Test1")]
public async Task<IActionResult> Test1([FromForm] Tester test)
{
return Ok();
}
}
在我的 React 前端,我有以下代碼可以使用 Axios 發布到 API:
const sendToServer = () => {
const test = {Word1: "abc", Word2: "def", Word3: "ghi"};
axios
.post(
'<my server>',
JSON.stringify(test),
{headers: { Accept: 'application/json' }}
)
.then(result => {
console.log(result.data);
})
;
}
而且,當我運行該函式時,我的 API 操作確實被命中,但該test物件始終為空(所有 3 個Word值都為空)。
我嘗試以各種方式更新 Post 請求,例如:
let data = new FormData();
data.append("tester", {Word1: "abc", Word2: "def", Word3: "ghi"});
axios
.post(
'<my server>',
data,
{headers: { Accept: 'application/json' }}
)
.then(result => {
console.log(result.data);
})
;
或者
let data = new FormData();
data.append("tester", JSON.stringify({Word1: "abc", Word2: "def", Word3: "ghi"}));
但是,每次test都不會填充該物件。
而且,當我嘗試將 APi 從 更改FromForm為 時FromBody,它永遠不會到達 API 并且我從 Axios post 方法中收到錯誤訊息:
Request Method: POST
Status Code: 415
Remote Address: [::1]:5001
Referrer Policy: strict-origin-when-cross-origin
這對我來說都是全新的,所以我確定這是我所缺少的愚蠢的東西,但我已經看過了,但找不到可以為我解決這個問題的解決方案。
uj5u.com熱心網友回復:
看起來您之前向控制器發送了一個非表單體。現在您在不設定內容型別的情況下發送它。
添加另一個標題:
'Content-Type' : 'application/json'
您應該能夠在不使用 axios 進行字串化的情況下發送資料。再次嘗試設定 [FromBody] 和下面的請求
const sendToServer = () => {
const test = { Word1: "abc", Word2: "def", Word3: "ghi" };
axios
.post(
'<my server>',
test,
{ headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } }
)
.then(result => {
console.log(result.data);
});
}
uj5u.com熱心網友回復:
如果你用 JSON 發送它,你應該使用[FromBody]屬性:
public async Task<IActionResult> Test1([FromBody] Tester test)
[FromForm] 使用,當物件作為表單資料發送時
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/349153.html
下一篇:從引數C#過濾資料
