Методы ПОЛУЧЕНИЯ / публикации в Express

#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 ) вступает в действие. Здесь вы передаете свои данные в теле запроса.