Использовать Требуется : не предназначен для сценариев, таких как request
или многих других библиотек.Reqclient позволяет в конструкторе указывать множество конфигураций, полезных, когда вам нужно снова и снова использовать одну и ту же конфигурацию: базовый URL, заголовки, параметры аутентификации, параметры ведения журнала, кэширование и т. Д. Также имеет полезные функции, такие как запрос и анализ URL, автоматическое кодирование иРазбор JSON и т. Д.
Лучший способ использования библиотеки - создать модуль для экспорта объекта, указывающего на API, и необходимых конфигураций для подключения:
Модуль client.js
:
let RequestClient = require("reqclient").RequestClient
let client = new RequestClient({
baseUrl: "https://myapp.com/api/v1",
cache: true,
auth: {user: "admin", pass: "secret"}
})
module.exports = client
А в контроллерах, где вам нужно использовать API, используйте вот так:
let client = require('client')
//let router = ...
router.get('/dashboard', (req, res) => {
// Simple GET with Promise handling to https://myapp.com/api/v1/reports/clients
client.get("reports/clients")
.then(response => {
console.log("Report for client", response.userId) // REST responses are parsed as JSON objects
res.render('clients/dashboard', {title: 'Customer Report', report: response})
})
.catch(err => {
console.error("Ups!", err)
res.status(400).render('error', {error: err})
})
})
router.get('/orders', (req, res, next) => {
// GET with query (https://myapp.com/api/v1/orders?state=open&limit=10)
client.get({"uri": "orders", "query": {"state": "open", "limit": 10}})
.then(orders => {
res.render('clients/orders', {title: 'Customer Orders', orders: orders})
})
.catch(err => someErrorHandler(req, res, next))
})
router.delete('/orders', (req, res, next) => {
// DELETE with params (https://myapp.com/api/v1/orders/1234/A987)
client.delete({
"uri": "orders/{client}/{id}",
"params": {"client": "A987", "id": 1234}
})
.then(resp => res.status(204))
.catch(err => someErrorHandler(req, res, next))
})
reqclient
поддерживает множество функций, но есть некоторые, которые не поддерживаются другими библиотеками: Интеграция OAuth2 и интеграция с регистратором с синтаксисом cURL и всегда возвращают собственные объекты Promise.