使用json参数进行Curl GET请求

Pra*_*mha 111 rest json curl

我试图通过cURL从命令提示符向远程REST API发送"GET"请求,如下所示:

curl -X GET -H "Content-type: application/json" -H "Accept: application/json"  "http://server:5050/a/c/getName/{"param0":"pradeep"}"
Run Code Online (Sandbox Code Playgroud)

但它没有返回任何输出.我试图直接从浏览器ping URL,我能够成功获得响应,我不明白该命令有什么问题.

基本上我想为远程REST服务设置一个"GET"请求,它通过curl给我一个json数据作为响应.任何人都可以指导我,我在做什么错误?我尝试了各种帖子,但他们所有人都在谈论不是关于GET的POST请求.

Har*_*ara 129

这应该工作:

  curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}" 
Run Code Online (Sandbox Code Playgroud)

用户选项-i而不是x.

  • 也许不同的报价?"服务器:5050/A/C /的getName { '参数0': '与Pradeep'}" (4认同)

Ste*_*oka 32

如果您真的想在正文中提交带有 JSON 的 GET 请求(比如 XHR 请求,并且您知道服务器支持处理 GET 请求的正文),您可以:

curl -X GET \
  -H "Content-type: application/json" \
  -H "Accept: application/json" \
  -d '{"param0":"pradeep"}' \
  "http://server:5050/a/c/getName"
Run Code Online (Sandbox Code Playgroud)

大多数现代 Web 服务器都接受这种类型的请求。


Mar*_*ler 17

如果你想在体内发送数据,那么你必须做一个POST或者PUT代替GET.

对我来说,看起来你正试图用uri参数发送查询,这与GET你无关,你也可以把这些参数放在上面POST,PUT等等.

查询是一个可选部分,由问号("?")分隔,其中包含本质上不是分层的附加标识信息.查询字符串语法不是一般定义的,但它通常被组织为一对=对,其中的对由分号或符号分隔.

例如:

curl http://server:5050/a/c/getName?param0=foo&param1=bar
Run Code Online (Sandbox Code Playgroud)

  • 允许任何HTTP请求消息包含消息正文.由于GET语义,它对GET永远不会有用 - 请求体的内容(如果有的话)不应该改变响应. (5认同)

小智 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,那么它不是标准方式.


smc*_*mci 5

尝试

curl -G ...
Run Code Online (Sandbox Code Playgroud)

代替

curl -X GET ...
Run Code Online (Sandbox Code Playgroud)

通常你不需要这个选项。各种 GET、HEAD、POST 和 PUT 请求都通过使用专用命令行选项来调用。

此选项仅更改 HTTP 请求中使用的实际单词,它不会改变curl 的行为方式。因此,例如,如果您想发出正确的 HEAD 请求,使用 -X HEAD 是不够的。您需要使用 -I, --head 选项。