gpt4 book ai didi

javascript - 带有可选参数的 Node.js 'request' 模块包装器 - 如何写得更简洁?

转载 作者:搜寻专家 更新时间:2023-11-01 00:41:14 26 4
gpt4 key购买 nike

我正在围绕 编写包装器:

var RequestWrapper = function(client, method, type, uuid, body, callback) {

callback = callback || body || uuid

// Let's get this looking a little cleaner!
body = (typeof body === 'object') ? body : uuid
body = (typeof body === 'object') ? body : undefined

var uri = urljoin(config.baseUrl, type, (typeof uuid === 'string') ? uuid : "")
var params = request.initParams(uri, {
body: body
}, callback)

params.method = method

params.json = true

request(params, function(error, response) {
response = new UsergridResponse(response)
params.callback(error, response)
})
}

module.exports = RequestWrapper

我支持四种 RESTful 方法,带有如下可选参数:

wrapper(client, 'GET', 'pets', cb) // returns an array of pets
wrapper(client, 'GET', 'pets', '<uuid>', cb) // returns a specific pet
wrapper(client, 'PUT', 'pets', '<uuid>', cb) // updates the specified pet
wrapper(client, 'POST', 'pets', { body: {} }, cb) // creates a new pet
wrapper(client, 'DELETE', 'pets', '<uuid>', cb) // deletes the specified pet

我的 RequestWrapper 工作正常,但我真的不喜欢我检查可选 body 参数和可选 uuid 参数的方式。我设法让 callback 看起来很漂亮 - 有没有办法我也可以为 body 做这个?

最佳答案

对于这么多参数,使用选项散列。

var RequestWrapper = function(opts) {
var uri = urljoin(config.baseUrl, opts.type, (typeof opts.uuid === 'string') ? opts.uuid : "")
var params = request.initParams(uri, {
body: opts.body
}, opts.callback)
/* etc */

在 ES6 中,您可以使用解构来使其更加清晰。

var RequestWrapper = function(opts) {
let {client, method, type, uuid = '', body, callback} = opts; // default for uuid
/* etc */

关于javascript - 带有可选参数的 Node.js 'request' 模块包装器 - 如何写得更简洁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33880039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com