【问题标题】:Multiple parameters are not being send properly in get method using Angular 5 and Node js backend使用 Angular 5 和 Node js 后端的 get 方法未正确发送多个参数
【发布时间】:2018-11-26 16:55:33
【问题描述】:

我正在尝试使用 nodejs 创建一个 API,并通过使用 Angular 5 GET 方法发送参数来使用 GET 方法访问它。当我使用 Postman 测试我的 API 时,它工作正常,但是从 Angular 发送 GET 请求并没有给我结果。我的节点js路由器接收多参数代码如下:

router.get('/:min&:max',(req,res,next)=> {
    Image.find({hue: {$gt:req.params.min,$lt:req.params.max}})
        .select('name url hue')
        .exec()
        .then(docs => {
            const response={
                images: docs.map(doc=> {
                    return {
                        name: doc.name,
                        url: doc.url,
                        hue: doc.hue,
                        _id: doc._id,
                    }
                })
            }
            res.status(200).json(docs);
        })
        .catch(err => {
            console.log(err);
            res.status(500).json({
                error: err
            });
        });
})

我的 Angular GET 方法是这样的:

getSearchedImages(min, max) {
        let params = {
            'min': String(min),
            'max': String(max)
        }
        this.http.get('http://localhost:3000/', { params: params})
            .subscribe(val=> console.log(val))
    } 

Angular 部分有问题还是我在 Node 中的代码需要调整

【问题讨论】:

    标签: javascript node.js angular get


    【解决方案1】:

    如果您想在请求正文中传递参数,请使用 POST。否则,如果您喜欢 GET,请在 URL 中传递参数。

    HTTP 本身并没有限制这一点,但一些前端实现会这样做

    【讨论】:

    • 在 url 中发送参数是一个好习惯吗:this.http.get('localhost:3000/'+min+'&'+max)
    • 绝对没问题。如果可能出现特殊字符,请不要忘记正确编码它们。还可能会考虑一些安全问题,因为代理和其他中间服务器可能会记录 url 而不是消息的正文。
    猜你喜欢
    • 2020-08-12
    • 2017-03-14
    • 2017-11-23
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多