收到状态代码 400 no_key 的无效值“ipaddress”

Posted

技术标签:

【中文标题】收到状态代码 400 no_key 的无效值“ipaddress”【英文标题】:received status code 400 invalid value 'ipaddress' for no_key 【发布时间】:2017-01-31 15:50:12 【问题描述】:

我将chef-api 用于 express js,我只想从厨师服务器获取节点“服务器 1”的 IP 地址

我正在发送这样的请求

代码:

chef.partialSearch("node", "name:server1","ip":"ipaddress" ,function(err, res) 如果(错误)console.log(错误); 否则console.log(res); );

或者

chef.partialSearch("node", q: "name:server1" ,"ip":"ipaddress" ,function(err, res) …… );

=> 响应:

received status code 400 invalid  value 'ipaddress' for no_key

代码源中的函数:

部分搜索:函数(索引,qs,数据,fn) http_methods.post([config.host_url, "search", index].join("/"), qs, data, function(err, response) 返回 fn(错误,响应); );

我无法理解来自官方网站文档api_chef_server的请求(http)的正确语法 能否请您给出一个有效的语法示例。 谢谢

【问题讨论】:

您是否总是计划一次访问一个节点? 【参考方案1】:

你可能想要的是这样的:

chef.getNode('server1', function(err, node) 
    if(err) throw err;
    console.log(node.automatic.ipaddress);
);

【讨论】:

感谢您的回复,是的,如果您只想请求一台服务器,但如果您想获取所有服务器的所有“ipaddress”属于一个“角色”,那么它是一个解决方案。您的厨师服务器的性能甚至应用程序的时间回复看看dougireton.com/blog/2013/01/19/get-chef-clients-by-version和engineering.voxer.com/2013/03/22/chef-part-2-performance,我找到了正确的语法,再次感谢您的回复:D 没错,这就是为什么我问你是否低估了你的用例:)【参考方案2】:

最后我找到了两个请求的正确语法

简单搜索:

chef.search("node", q: "name:server1" , function(err, res) 如果(错误)console.log(错误); 否则console.log(res); );

部分搜索:

chef.partialSearch("node", "chef_environment:prod", name: ['name'] , 'ipaddress': ['ipaddress'] , function(err, res) 如果(错误)console.log(错误); 否则console.log(res); );

希望这可以帮助仍在寻找的其他人。

【讨论】:

以上是关于收到状态代码 400 no_key 的无效值“ipaddress”的主要内容,如果未能解决你的问题,请参考以下文章

预检响应具有无效的 HTTP 状态代码 400 - aspx

预检的 Wcf webHttpBinding 响应具有无效的 HTTP 状态代码 400

axios 和 reactjs:预检响应具有无效的 HTTP 状态代码 400

下游提供无效数据时向客户端发送 Http 状态码

阿波罗客户端- [未处理的承诺拒绝:错误:响应不成功:收到状态代码 400]

状态:400 标题:“发生一个或多个验证错误。”