Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример:
Связь клиент-сервер
Мы используем экземпляр прокси-сервера JavaScript на стороне клиента в качестве оболочки для службы HTTP (сетевой). Окончательное использование будет выглядеть так:
await server.saveUsername(username); // 🚀
Экземпляр прокси server
берет вызываемый ключ свойства saveUsername
и делает HTTP-запрос к реальному серверу с заданными данными. Реализация прокси выглядит так:
export const server = new Proxy({}, { get(_, key) { return async (data) => { return await makeHttpPostRequest(`/${key}`, data); }; } }); // 😮
Сам HTTP-запрос можно отправить с помощью собственного метода fetch
или любой библиотеки, например axios
.
На стороне сервера мы также можем сделать хорошую реализацию, чтобы отобразить эту структуру. В вашем серверном приложении NodeJS (Express) просто укажите все методы API, чтобы они могли вызываться клиентом через прокси. Это выглядит так:
// Load all API methods const api = require("./api.js"); // Construct the express server app const app = express(); // Listen for incoming HTTP POST requests Object.keys(api).forEach(methodName => { app.post(`/${methodName}`, api[methodName]); });
Показанная выше логика сопоставляет все методы из api.js
, чтобы мы прослушивали входящие HTTP-запросы POST с именем метода в качестве пути.
В нашем примере реализация на стороне сервера будет выглядеть так (api.js):
module.exports = { saveUsername(req, res) { // TODO: save username res.send({ success: "true" }); } };
Таким образом, какой бы метод вы ни указали в файле api.js
, он сразу же будет доступен на стороне клиента. Так вы сэкономите время, а код будет выглядеть красиво и чисто.
Получить код
Вот код на GitHub:
👉 https://github.com/dobscal/javascript-proxy-fun
Вот объяснение видео:
👉 https://www.youtube.com/watch?v=SCHHFcGWRLQ
Я открыт для обратной связи, так что оставляйте комментарии.
Подробнее обо мне: https://dobschal.eu
Спасибо! ❤️