#javascript #express #http
#javascript #экспресс #http
Вопрос:
Я настраиваю сервер с использованием express.
Мой вопрос не имеет ничего общего с самим проектом, потому что он работает отлично.
У меня просто есть небольшое сомнение в том, почему я должен использовать GET, когда для меня имеет смысл использовать POST.
Итак, для краткости я настраиваю ключ API на стороне сервера и извлекаю его на стороне клиента, чтобы я мог его использовать.
Это фрагмент на стороне сервера:
const apiKey = process.env.API_KEY;
console.log(`Your API key is ${apiKey}`);
const dataObject ={};
app.get('/api', (req,res) => {
res.send({key: apiKey})
})
app.get('/all', sendData = (req,res) => {
res.send(dataObject)
})
app.post('/addText', (req,res) => {
let newEntry = {
agreement = req.body.agreement,
subjectivity = req.body.subjectivity
}
dataObject = newEntry;
res.send(dataObject);
} )
А затем на стороне клиента я выбираю путь ‘/ api’:
const getApiKey = async () => {
// Getting API key from server
const request = await fetch('/api');
try {
const data = await request.json();
console.log(data);
return data;
}catch(error) {
console.log('ERROR', error);
}
}
Хорошо, это работает и все такое, но мой вопрос:
- При первом получении на стороне сервера я понимаю, что отправляю ключ API в путь ‘/ api’, чтобы я мог получить этот ключ с
fetch
помощью на стороне клиента. Но если я отправляю ключ api по этому пути, почему я использую GET, а не POST?
Извините, если это кажется глупым вопросом, но мне трудно понять метод GET.
Спасибо!
Ответ №1:
Вы не отправляете какой-либо ключ API на сервер. Сервер отправляет ключ API клиенту в качестве ответа. Клиент использует запрос GET для получения ключа API из /api . Имена методов (GET, POST, PUT, DELETE, …) указаны с точки зрения клиента.
«А затем на стороне клиента я выбираю путь «/ api»:» Нет. Сначала клиент отправляет запрос с
const request = await fetch('/api');
try {
const data = await request.json();
console.log(data);
return data;
}catch(error) {
console.log('ERROR', error);
}
Это запускает обратный вызов в
app.get('/api', (req,res) => {
res.send({key: apiKey})
})
и сервер отправляет ответ.
Комментарии:
1. Большое спасибо, Томас! Я понял это. Я не знал о перспективной части.
Ответ №2:
Этот код возвращает ключ API с сервера. Он не отправляет его с клиента на сервер.
app.get('/api', (req,res) => {
res.send({key: apiKey})
}
В
res.send()
Функция создает ответ, возвращаемый сервером клиенту.
Ответ №3:
Обычно вы используете GET
метод, когда клиент должен прочитать некоторые данные с сервера, в этом случае вы хотите прочитать API_KEY, определенный на сервере. GET
не имеет тела, но каждый запрос может быть параметрическим путем передачи параметров в строке запроса.
С другой стороны, когда вам нужно обновить или создать объект на сервере, именно тогда POST
(или PUT
) вступает в действие. Здесь вы передаете свои данные в теле запроса.