使用 json 参数缩放 GET 请求

我试图通过 cURL 从 Command Prompt 向远程 REST API 发送一个“ GET”请求,如下所示:

curl -X GET \
-H "Content-type: application/json" \
-H "Accept: application/json" \
"http://server:5050/a/c/getName/{"param0":"pradeep"}"

但它不返回任何输出。我尝试从浏览器直接 ping 网址,我能够得到成功的响应,我不明白是什么错误的命令。

基本上,我想设置一个“ GET”请求到一个远程 REST 服务,它通过 curl 向我提供 json 数据作为响应。有人能告诉我,我犯了什么错误吗?我尝试了各种帖子,但是它们都是关于 POST 请求的,而不是 GET。

575268 次浏览

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,这不是一种标准方法。

这应该会奏效:

  curl -i -H "Accept: application/json" 'server:5050/a/c/getName{"param0":"pradeep"}'

使用选项-i 代替 x。

如果你想把你的数据发送到主体内部,那么你必须做一个 POST或者 PUT而不是 GET

对于我来说,它看起来像你试图发送的 带有 uri 参数的查询,这是不相关的 GET,你也可以把这些参数对 POSTPUT等。

查询是一个可选的部分,用问号(“ ?”)分隔,其中包含非分层性质的其他标识信息。查询字符串语法没有通用定义,但通常组织为 = 对序列,其中的对由分号或与号分隔。

例如:

curl http://server:5050/a/c/getName?param0=foo&param1=bar

试试看

curl -G ...

而不是

curl -X GET ...

通常你不需要这个选项。所有类型的 GET、 HEAD、 POST 和 PUT 请求都是通过使用专用的命令行选项来调用的。

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

对于受用户名和密码保护的服务,请使用以下内容

curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'

如果您确实希望提交带有 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"

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

由于某些原因,上面提到的解决方案都不适合我。这是我的解决方案。它非常基本。

Curl-X GET API _ ENDPOINT H‘ Content-Type: application/json’DJSON _ Data

API _ ENDPOINT 是您的 API 端点,例如: http://127.0.0.1:80/api

- H 已用于添加标题内容。

JSON _ DATA 是您的请求主体,它可以类似于: : {“ data _ key”: “ value”}。

D之后的任何内容都是在 GET 请求中需要发送的数据