❯ curl -X POST "https://httpbin.org/post" -H "accept: application/json"
Note: Unnecessary use of -X or --request, POST is already inferred.
-d や --data があると自動で POST と判断するので -X POST などは不要だって。
❯ echo '{
"user_id" : 123,
"name" : "ワロ田",
"age" : 14
}' | curl -vs -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json' -d @- https://httpbin.org/post
* Host httpbin.org:443 was resolved.
* IPv6: (none)
* IPv4: 54.152.142.77, 3.224.7.64, 35.172.19.140, 34.238.6.191
* Trying 54.152.142.77:443...
* Connected to httpbin.org (54.152.142.77) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
* subject: CN=httpbin.org
* start date: Aug 20 00:00:00 2024 GMT
* expire date: Sep 17 23:59:59 2025 GMT
* subjectAltName: host "httpbin.org" matched cert's "httpbin.org"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M02
* SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://httpbin.org/post
* [HTTP/2] [1] [:method: POST]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: httpbin.org]
* [HTTP/2] [1] [:path: /post]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [content-type: application/json; charset=UTF-8]
* [HTTP/2] [1] [accept: application/json]
* [HTTP/2] [1] [content-length: 55]
> POST /post HTTP/2
> Host: httpbin.org
> User-Agent: curl/8.7.1
> Content-Type: application/json; charset=UTF-8
> Accept: application/json
> Content-Length: 55
>
* upload completely sent off: 55 bytes
< HTTP/2 200
< date: Sun, 13 Apr 2025 03:08:32 GMT
< content-type: application/json
< content-length: 557
< server: gunicorn/19.9.0
< access-control-allow-origin: *
< access-control-allow-credentials: true
<
{
"args": {},
"data": "{ \"user_id\" : 123, \"name\" : \"\u30ef\u30ed\u7530\", \"age\" : 14}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Content-Length": "55",
"Content-Type": "application/json; charset=UTF-8",
"Host": "httpbin.org",
"User-Agent": "curl/8.7.1",
"X-Amzn-Trace-Id": "Root=1-67fb2ab0-3685bdfa4519f20b0d94c818"
},
"json": {
"age": 14,
"name": "\u30ef\u30ed\u7530",
"user_id": 123
},
"origin": "114.123.123.8",
"url": "https://httpbin.org/post"
}
* Connection #0 to host httpbin.org left intact
❯ echo '{
"user_id" : 123,
"name" : "ワロ田",
"age" : 14
}' | curl -s -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json' -d @- https://httpbin.org/post | jq
{
"args": {},
"data": "{ \"user_id\" : 123, \"name\" : \"ワロ田\", \"age\" : 14}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Content-Length": "55",
"Content-Type": "application/json; charset=UTF-8",
"Host": "httpbin.org",
"User-Agent": "curl/8.7.1",
"X-Amzn-Trace-Id": "Root=1-67fb2b2f-6faa217ece89a13acc5315"
},
"json": {
"age": 14,
"name": "ワロ田",
"user_id": 123
},
"origin": "114.123.123.81",
"url": "https://httpbin.org/post"
}
Form からの POST があるので
リクエストヘッダは2つつけたほうが
「JSON の POST ですよ」
とはっきり明示できそうです。
🧑🏻💻 参考
【Swift】URLSession で JSONを POST して JSON のレスポンスを受け取る
👉 https://t.co/9CJAR9itAA#Swift #プログラミング— chanzmao (@maochanz) June 17, 2024
【Swift】 JSONEncoder / JSONDecorder の基本的な使い方
👉 https://t.co/IKRIJiAg3q#Swift #プログラミング— chanzmao (@maochanz) June 17, 2024