React axios post에서 Web API HttpPost 메서드의 데이터를받을 수 없습니다.
Sep 25 2020
내 Web API Post 메서드는 Swagger에서 잘 작동하지만 axios를 사용하여 React App에서 게시 요청을 보내면 데이터 [FromBody]가 null입니다. 다음은 Web API 방법입니다.
[HttpPost]
[Route("api/employee/addMany")]
public IHttpActionResult Post([FromBody] dynamic data) //my axios request hit this method but data is always null. I have tried passing without stringifying
{
Employee[] employees=JObject.Parse(data);
//doing some stuff with employees
return Ok();
}
그리고 여기 Axios 포스트 요청 코드가 있습니다.
export function addEmployees(employees:Employee[]) {
return axios.post(`api/employee/addMany`, { employees });
}
그리고 여기에 요청 인터셉터가 있으며, 모델 키 파스칼 화 및 데이터 문자열 화를 수행합니다.
const pascalizeKeys = (obj:any):any => {
if (Array.isArray(obj)) {
return obj.map(v => pascalizeKeys(v));
} else if (obj !== null && obj.constructor === Object) {
return Object.keys(obj).reduce(
(result, key) => ({
...result,
[String(upperFirst(key))]: pascalizeKeys(obj[key]),
}),
{},
);
}
return obj;
};
export function applyInterceptors(Axios:typeof axios){
Axios.interceptors.request.use((request)=>{
if(request.data){
request.data = JSON.stringify(pascalizeKeys(request.data));
return request;
}
return request;
}
)
}
답변
1 Slim Sep 25 2020 at 08:35
axios 포스트를 작동시키기 위해 시도 할 사항 :
- 헤더 설정
headers: {
'content-type': 'application/json',
}
요청 의
data또는params필드에 json을 첨부하십시오.그래도 데이터를 가져올 수 없다면
formData대신 데이터 필드에 새 데이터로 보내십시오.
let formData = new FormData()
formdata.append('name', yourJson)
await axios({
method: 'post',
url: '/your/url',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
})
지금 요청과 함께 가져와야합니다.