「すぐ呼び出し可能なWebAPI」をcurlコマンドで使いたい
投稿者 るきお  (社会人)
投稿日時
2021/3/11 20:48:59
半角スペースをエスケープする必要があるようですね。
気にしたことなかったのですがJSONの仕様??
https://stackoverflow.com/questions/16042274/definition-of-whitespace-in-json
なお、このサンプルAPIの説明はここにあります。
https://www.umayadia.com/Note/Note028WebAPISample.htm
curl.exe https://umayadia-apisample.azurewebsites.net/api/persons -X POST -i -H "content-type:application/json" -d '{\"name\":\"YAMADA\u0020Taro\",\"note\":\"Shimane\",\"age\":75,\"registerDate\":\"2014-03-03T04:14:25\"}'
気にしたことなかったのですがJSONの仕様??
https://stackoverflow.com/questions/16042274/definition-of-whitespace-in-json
なお、このサンプルAPIの説明はここにあります。
https://www.umayadia.com/Note/Note028WebAPISample.htm
投稿者 まさ  (社会人)
投稿日時
2021/3/12 09:21:37
るきおさん
ありがとうございます。
一通りの操作を確認できました。
ありがとうございます。
一通りの操作を確認できました。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/3/15 09:25:57
自分の環境(Win10 20H2 のコマンドプロンプト)だと、
まささん/るきおさんいずれのパターンでも失敗して、
HTTP/1.1 400 Bad Request になってしまいました。
エラーの内容を貼っておきます。
【空白あり(まささん)】
【空白なし(るきおさん)】
どうも、「'」のシングルクォートが悪さをしているように見えたので、
https://stackoverflow.com/questions/17560858/
を参考にして、空白入りのまま下記のようにしてみたところ、
自分の環境でも 『{"success":true,"data":null}』を得る事が出来ました。
ただし cmd.exe からではなく PowerShell 5.1 から実行してみた場合には、
るきおさんのコマンドラインで成功し、まささんや私のコマンドラインでは失敗しました。
また、下記の Curl Online サイトにおいては、上記 3 パターンとも成功します。
https://reqbin.com/curl
※上記サイトでは、curl.exe を curl に書き換えて実行する必要があります。
まささん/るきおさんいずれのパターンでも失敗して、
HTTP/1.1 400 Bad Request になってしまいました。
エラーの内容を貼っておきます。
【空白あり(まささん)】
HTTP/1.1 400 Bad Request
Content-Length: 267
Content-Type: application/problem+json; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;Secure;Domain=umayadia-apisample.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;SameSite=None;Secure;Domain=umayadia-apisample.azurewebsites.net
Date: Mon, 15 Mar 2021 00:15:37 GMT
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|e78c2efa-469b944d221c2627.","errors":{"$":["''' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0."]}}curl: (3) [globbing] unmatched close brace/bracket in column 69
Content-Length: 267
Content-Type: application/problem+json; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;Secure;Domain=umayadia-apisample.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;SameSite=None;Secure;Domain=umayadia-apisample.azurewebsites.net
Date: Mon, 15 Mar 2021 00:15:37 GMT
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|e78c2efa-469b944d221c2627.","errors":{"$":["''' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0."]}}curl: (3) [globbing] unmatched close brace/bracket in column 69
【空白なし(るきおさん)】
HTTP/1.1 400 Bad Request
Content-Length: 267
Content-Type: application/problem+json; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;Secure;Domain=umayadia-apisample.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;SameSite=None;Secure;Domain=umayadia-apisample.azurewebsites.net
Date: Mon, 15 Mar 2021 00:17:34 GMT
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|e78c2efb-469b944d221c2627.","errors":{"$":["''' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0."]}}
Content-Length: 267
Content-Type: application/problem+json; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;Secure;Domain=umayadia-apisample.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=73d9a522278573bf03c9ee51757c1637033aa630368a96763ab9c0c83f5a8f60;Path=/;HttpOnly;SameSite=None;Secure;Domain=umayadia-apisample.azurewebsites.net
Date: Mon, 15 Mar 2021 00:17:34 GMT
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|e78c2efb-469b944d221c2627.","errors":{"$":["''' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0."]}}
どうも、「'」のシングルクォートが悪さをしているように見えたので、
https://stackoverflow.com/questions/17560858/
を参考にして、空白入りのまま下記のようにしてみたところ、
自分の環境でも 『{"success":true,"data":null}』を得る事が出来ました。
curl.exe https://umayadia-apisample.azurewebsites.net/api/persons -X POST -i -H "content-type:application/json" -d "{\"name\":\"YAMADA Taro\",\"note\":\"Shimane\",\"age\":75,\"registerDate\":\"0214-03-03T04:14:25\"}"
ただし cmd.exe からではなく PowerShell 5.1 から実行してみた場合には、
るきおさんのコマンドラインで成功し、まささんや私のコマンドラインでは失敗しました。
また、下記の Curl Online サイトにおいては、上記 3 パターンとも成功します。
https://reqbin.com/curl
※上記サイトでは、curl.exe を curl に書き換えて実行する必要があります。
RUST APIの理解のため、Windowsのcurlコマンドでのアクセスを試そうとしたのですが、jsonデータを使う「POST」「PUT」がエラーになります。
curlコマンドの知見があれば教えていただけないでしょうか。
コマンドプロンプトで試したcurlコマンドは以下になります。
curl.exe https://umayadia-apisample.azurewebsites.net/api/persons -X POST -i -H "content-type:application/json" -d '{\"name\":\"YAMADA Taro\",\"note\":\"Shimane\",\"age\":75,\"registerDate\":\"0214-03-03T04:14:25\"}'