我正尝试通过cURL从命令提示符向远程REST API发送“GET”请求,如下所示:
curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}"
但它没有返回输出。我试图直接从浏览器ping URL,我能够成功获得响应,我不明白该命令有什么问题。
基本上我想为远程REST服务设置一个“GET”请求,它通过curl将json数据作为响应。任何人都可以指导我,我在做什么错误?我尝试了各种帖子,但所有帖子都谈到了不是关于GET的POST请求。
答案 0 :(得分:119)
这应该有效:
curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}"
用户选项-i而不是x。
答案 1 :(得分:13)
如果您想在正文中发送数据,则必须制作POST
或PUT
而不是GET
。
对我而言,您似乎尝试发送与GET
无关的query with uri parameters,您也可以将这些参数放在POST
上,{{1}等等。
查询是一个可选部分,由问号(“?”)分隔,其中包含本质上不是分层的其他标识信息。查询字符串语法不是一般定义的,但它通常被组织为一对=对,其中的对由分号或符号分隔。
例如:
PUT
答案 2 :(得分:8)
GET采用名称值对。
尝试类似:
curl http://server:5050/a/c/getName/?param1=pradeep
或
curl http://server:5050/a/c/getName?param1=pradeep
顺便说一句,常规REST应该看起来像
curl http://server:5050/a/c/getName/pradeep
如果在GET URL中使用JSON,则不是标准方式。
答案 3 :(得分:5)
对于用户名和密码保护的服务,请使用以下
curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'
答案 4 :(得分:3)
尝试
curl -G ...
而不是
curl -X GET ...
通常您不需要此选项。使用专用命令行选项可以调用各种GET,HEAD,POST和PUT请求。
此选项仅更改HTTP请求中使用的实际单词,它不会改变curl行为的方式。因此,例如,如果您想要发出正确的HEAD请求,使用-X HEAD就不够了。您需要使用-I, - head选项。
答案 5 :(得分:1)
如果您确实要使用正文提交带有JSON的GET请求,则可以:
curl -X GET \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{"param0":"pradeep"}' \
"http://server:5050/a/c/getName"
大多数现代Web服务器都接受这种类型的请求。
答案 6 :(得分:0)
由于某种原因,以上提到的解决方案都不对我有用。这是我的解决方案。这很基本。
curl -X GET API_ENDPOINT -H 'Content-Type:application / json' -d ' JSON_DATA >'
API_ENDPOINT 是您的api端点,例如:http://127.0.0.1:80/api
-H 已用于添加标题内容。
JSON_DATA 是您的请求主体,它可以是:: {“ data_key”:“ value”}之类的东西。围绕JSON_DATA的''很重要。
-d 之后的所有内容都是您需要在GET请求中发送的数据