When IDs are generated in a server for documents, how can the frontend send HTTP Delete requests properly? Since HTTP Delete requests require a document's ID to route to the server, but IDs are generated in the server, how can the frontend know the IDs generated?
In my server:
let persons = [ // my "database"
{
"name": "Arto Hellas",
"number": "040-123456",
"id": 1
},
{
"name": "test1",
"number": "111-111-1111",
"id": 4168 //GENERATED AFTER RECEIVING AN HTTP POST REQUEST
},
{
"name": "test2",
"number": "222-222-2222",
"id": 839 //GENERATED AFTER RECEIVING AN HTTP POST REQUEST
}
];
app.delete('/api/persons/:id', (req,res) => {
let id = Number(req.params.id);
persons = persons.filter(person => person.id !== id);
res.json(persons);
});
const generateId = () => {
return Math.floor(Math.random() * 10000); //0 to 9999
}
app.post('/api/persons', (req,res) => {
let body = req.body;
let newPerson = {
name: body.name,
number: body.number,
id: generateId()
}
persons = persons.concat(newPerson);
res.json(persons);
});
When my frontend creates an HTTP Post request to the backend, it sends a Name and Number. The backend receives the Post request, and creates a JS object with the Name, Number, and also generates an ID for it, then appends it to my array "database".
Here is my React component in question with deletion capability,
const PhoneBookEntry = ({ name, number, persons, setPersons}) => {
const deletePerson = () => {
phonebookComm
.delPerson(id) // *** how can my frontend determine the IDs generated in the backend?
.then( res => {
//updating my application's persons state
persons.splice(persons.findIndex(element => element.name === name), 1 );
setPersons(persons.map(person => person.name !== name ? person : null));
})
.catch( error => {
console.log('error', error);
})
}
return (
<div>
<div className="personAndDelBtn">{name} {number} </div>
<button className="personAndDelBtn" onClick={deletePerson}>delete</button>
</div>
);
}
Where phonebookComm uses axios:
const delPerson = id => {
return axios.delete(`${baseUrl}/${id}`).then(res => res.data);
}
How can I get IDs from the backend, for HTTP Delete requests in the frontend?
Since the backend generates the ID for each document, the frontend doesn't know a document's ID. When the frontend needs to send an HTTP Delete request, how can it know what ID to use?