Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

「すぐ呼び出し可能なWebAPI」をcurlコマンドで使いたい 解決済み

curl JSON REST WebAPI タグの編集...

投稿者 まさ   (社会人)   投稿日時 2021/3/11 15:17:06
「すぐ呼び出し可能なWebAPIのサンプル」を拝見しました。
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\"}'


投稿者 るきお   (社会人)   投稿日時 2021/3/11 20:48:59
半角スペースをエスケープする必要があるようですね。

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 になってしまいました。
エラーの内容を貼っておきます。


【空白あり(まささん)】
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



【空白なし(るきおさん)】
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."]}}




どうも、「'」のシングルクォートが悪さをしているように見えたので、
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 に書き換えて実行する必要があります。