Can any help me with this?
I keep getting a 400 bad request from Axios.
I can pass a GET request and confirm its working fine.
I create http-common.js file with following code:
JavaScript
x
9
1
import axios from 'axios';
2
3
export default axios.create({
4
baseURL: 'https://5fa97367c9b4e90016e6a7ec.mockapi.io/api',
5
headers: {
6
'Content-type': 'application/json'
7
}
8
});
9
Then,I create a service that uses axios object above to send HTTP requests.
TodoService.js
JavaScript
1
32
32
1
import http from '../http-common/http-common';
2
3
const getAll=()=>{
4
return http.get('/todos');
5
};
6
7
const get=id=>{
8
return http.get(`/todos/${id}`);
9
};
10
11
const create=data=> {
12
return http.post('/todos',data);
13
};
14
15
const update=(id,data)=>{
16
return http.put(`/todos/${id}`,data);
17
};
18
19
const remove = id => {
20
return http.delete(`/todos/${id}`);
21
};
22
23
const removeAll = () => {
24
return http.delete(`/todos`);
25
};
26
27
const findByTitle = title => {
28
return http.get(`/todos?title=${title}`);
29
};
30
31
export default {getAll,get,create,update,remove,removeAll,findByTitle};
32
Then, I use TodoDataService.create(data) … in AddTodos component.
AddTodos.js
JavaScript
1
72
72
1
import React, { useState } from 'react';
2
import TodoDataService from '../services/TodoService';
3
4
const AddTodos = () => {
5
6
const initialTodoState={
7
id:null,
8
title: '',
9
isDone: false,
10
user: ''
11
};
12
13
const [todo,setTodo]=useState(initialTodoState);
14
const [submitted,setSubmitted]=useState(false);
15
16
const handleInputChange=event=>{
17
const {name,value}=event.target;
18
setTodo({todo,[name]:value});
19
};
20
21
const saveTodo =()=>{
22
var data={
23
title: todo.title,
24
isDone:todo.isDone,
25
user: todo.user
26
27
};
28
console.log(data);
29
30
TodoDataService.create(data)
31
.then(response => {
32
setTodo({
33
id:response.data.id,
34
title: response.data.title,
35
isDone: response.data.isDone,
36
user: response.data.user
37
});
38
setSubmitted(true);
39
console.log(response.data);
40
})
41
.catch(e => {
42
console.log(e);
43
});
44
};
45
46
const newTodo=()=>{
47
setTodo(initialTodoState);
48
setSubmitted(false);
49
};
50
51
return (
52
<div className="submit-form">
53
{submitted ? (
54
<div> //...
55
) : (
56
<div>
57
<div className="form-group"> //... </div>
58
59
<div className="form-group"> //... </div>
60
61
<button onClick={saveTodo} className="btn btn-success">
62
Submit
63
</button>
64
</div>
65
)}
66
</div>
67
)
68
}
69
70
export default AddTodos;
71
72
When clicked Submit it’s giving this error:
Advertisement
Answer
I recreate your api call and got this response:
JavaScript
1
9
1
await fetch('https://5fa97367c9b4e90016e6a7ec.mockapi.io/api/todos', {
2
method: 'POST', body: JSON.stringify({id: "123",title: "homework", isDone: false, user: "foo"})})
3
.then(response => response.json())
4
.then(data => {
5
console.log(data)
6
})
7
8
error 400 "Max number of elements reached for this resource!"
9
you need to delete some records in order to insert new ones
so after deleting a record:
JavaScript
1
7
1
await fetch('https://5fa97367c9b4e90016e6a7ec.mockapi.io/api/todos/1', {
2
method: 'DELETE'})
3
.then(response => response.json())
4
.then(data => {
5
console.log(data)
6
})
7
VM623:5 {id: “1”, title: “deneme”, isDone: true, user: “cafererensimsek”}
and posting a new one, now it works