curl残りのAPIコールを作成する例
コマンドラインからREST APIをすばやくテストする場合は、curl . このポストでは、GET、POST、PUT、HEADを実行する方法を示します.残りのAPIに対してHTTPリクエストを削除します.
このブログ記事の目的のために、私はサポートするREST APIを使用しますwww.bookmarks.dev . APIはdocumented with OpenAPI ブラウザでのテストで利用可能ですhttps://www.bookmarks.dev/api/docs/ .
導入
ブログ記事の最初の部分では、curlに簡単に紹介します.また、オプションを使用することができます.第2部では、異なるHTTP操作の例を示しますbookmarks.dev-api .
カールとは
Curlは、URLの構文でデータを転送するためのコマンドラインツールとライブラリです.CurlはSSL証明書、HTTP POST、HTTP PUT、FTPアップロード、HTTPフォームベースのアップロード、プロキシ、HTTP/2、クッキーをサポートします.
ユーザー+パスワード認証(基本的な、ダイジェスト、NTLM、交渉、Kerberos…)、ファイル転送再開、プロキシトンネリングと詳細.
前述のように、私はCurlを使用して、残りのAPIに対してヘッドを取得、取得、ポスト、プット、削除要求を削除します.
ヘッドリクエスト
リソースがサービス可能であるかどうかを確認するには、どのヘッダの種類や応答ヘッダに書かれた他の有用なメタ情報を、全体のコンテンツを転送する必要がなく、
私は、最新の公共のブックマークを要求するとき、私が何を得るかについて見たいです.次のヘッドリクエストをcurlで発行します.
リクエスト
反応
を返します.
彼らはサポートに追加されているCross-Origing Resource Sharing (CORS) .
リクエストを得る
URLにリソースを持たないcurlを実行するとgetを実行します.
リクエスト
カールオプション あなたがそれをきれいに表示したいならば、私はあなたがようなツールを使うことを提案しますjq :
リクエスト
リクエスト
あなたがそれをリダイレクトしない限り、潜在的に端末/stdoutにさえあなたが求めるデータを出力します. JQの代わりに使用することですPython マシンに持っているなら
複数のヘッダを持つcURLリクエスト
からのすべての反応bookmarks.dev-api はgzipである.
gzipされたバリアントを次のリクエストを発行することで要求できます.
リクエスト
を達成するためには、単に別のを追加する必要があります
反応
ブックマークのCRUD操作.dev API
これらはいくつかの基本的なcURL HTTPコールで、いくつかのオプションがありました.今、それらを組み合わせて、生産準備APIに対して例を示します.例では、localhostで動作するAPIを使用します.あなたがからの指示に従うならば、それはDockerReadme ファイル.
APIは保護されていますKeycloak とベアラートークン.KeyCloakでベアラートークンを取得する方法は、クライアントのダイレクトアクセス補助を有効にすることですResource Owner Password Credentials
OAuth 2仕様では.したがって、フォームのパラメータ内でユーザーの資格情報が送信されます.もちろんcurlでもできます.
リクエスト
応答は次のようになります.
リクエスト
はてなブックマーク
リクエスト
反応
リソースを読み込む
以前に作成されたブックマークを読んでください
リソースの更新
リクエスト
リソースの削除
リクエスト
削除を再度実行しようとすると、404リソースのNOTHERN状態が発生します.
反応
結論
私は、ちょうどこのブログ柱の表面をひっくり返しています.チェックアウトcurl docs 更なる能力のために.
このブログ記事の目的のために、私はサポートするREST APIを使用しますwww.bookmarks.dev . APIはdocumented with OpenAPI ブラウザでのテストで利用可能ですhttps://www.bookmarks.dev/api/docs/ .
導入
ブログ記事の最初の部分では、curlに簡単に紹介します.また、オプションを使用することができます.第2部では、異なるHTTP操作の例を示しますbookmarks.dev-api .
カールとは
Curlは、URLの構文でデータを転送するためのコマンドラインツールとライブラリです.CurlはSSL証明書、HTTP POST、HTTP PUT、FTPアップロード、HTTPフォームベースのアップロード、プロキシ、HTTP/2、クッキーをサポートします.
ユーザー+パスワード認証(基本的な、ダイジェスト、NTLM、交渉、Kerberos…)、ファイル転送再開、プロキシトンネリングと詳細.
前述のように、私はCurlを使用して、残りのAPIに対してヘッドを取得、取得、ポスト、プット、削除要求を削除します.
ヘッドリクエスト
リソースがサービス可能であるかどうかを確認するには、どのヘッダの種類や応答ヘッダに書かれた他の有用なメタ情報を、全体のコンテンツを転送する必要がなく、
HEAD
リクエスト.私は、最新の公共のブックマークを要求するとき、私が何を得るかについて見たいです.次のヘッドリクエストをcurlで発行します.
リクエスト
curl -I https://www.bookmarks.dev/api/public/bookmarks
ORcurl -i -X HEAD https://www.bookmarks.dev/api/public/bookmarks
カールオプション-I
or --head
- ヘッダを取得する-i, --include
- 出力にHTTPレスポンスヘッダを含める-X, --request
- HTTPサーバとの通信時に使用するカスタムリクエストメソッドを指定します.HTTP/1.1 200 OK
Server: nginx/1.12.0
Date: Sun, 23 Feb 2020 21:31:40 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 98452
Connection: keep-alive
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, Location
Access-Control-Expose-Headers: Content-Type, Authorization, Location
ETag: W/"18094-R7MFvLpccDdVu3q8rR1UQBrAaX8"
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Content-Type-Options: nosniff
以下のヘッダに注意してくださいAccess-Control-Allow-Headers: Content-Type, Authorization, Location
Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Origin: *
彼らはサポートに追加されているCross-Origing Resource Sharing (CORS) .
リクエストを得る
URLにリソースを持たないcurlを実行するとgetを実行します.
リクエスト
curl https://www.bookmarks.dev/api/version
と等価curl -X GET "https://www.bookmarks.dev/api/version" -H "accept: application/json"
反応{"version":"7.0.0","gitSha1":"71eb40fb6d224d5d9a90c89ae943390e15f001c3"}
使用に注意accept: application/json
カールオプション
-H, --header
- サーバに渡す顧客ヘッダーリクエスト
curl https://www.bookmarks.dev/api/version | jq .
反応 % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 72 100 72 0 0 611 0 --:--:-- --:--:-- --:--:-- 615
{
"version": "7.0.0",
"gitSha1": "71eb40fb6d224d5d9a90c89ae943390e15f001c3"
}
あなたがプログレスメーター(最初の部分)が欲しくないならば、あなたは黙ってカールすることができます:リクエスト
curl -s https://www.bookmarks.dev/api/version | jq .
反応{
"version": "7.0.0",
"gitSha1": "71eb40fb6d224d5d9a90c89ae943390e15f001c3"
}
カールオプション-s, --silent
- サイレントまたは静かなモード.進行状況メーターまたはエラーメッセージを表示しないでください.カールミュートを作ります.あなたがそれをリダイレクトしない限り、潜在的に端末/stdoutにさえあなたが求めるデータを出力します.
curl -s https://www.bookmarks.dev/api/version | python -m json.tool
複数のヘッダを持つcURLリクエスト
からのすべての反応bookmarks.dev-api はgzipである.
gzipされたバリアントを次のリクエストを発行することで要求できます.
リクエスト
curl -v -H "Accept:application/json" -H "Accept-encoding:gzip" http://localhost:8888/demo-rest-jersey-spring/podcasts/
カールオプション-v, --verbose
- 反対の--silent
, 操作をもっとおしゃべりにする-H
対応する値を持つオプション.この場合、レスポンスをファイルにリダイレクトしない場合は、コンテンツ内で読み取り不能な文字を取得します.反応
> GET /api/version HTTP/1.1
> Host: www.bookmarks.dev
> User-Agent: curl/7.54.0
> Accept:application/json
> Accept-encoding:gzip
>
< HTTP/1.1 200 OK
< Server: nginx/1.12.0
< Date: Fri, 06 Mar 2020 14:45:39 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: Express
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
< Access-Control-Allow-Headers: Content-Type, Authorization, Location
< Access-Control-Expose-Headers: Content-Type, Authorization, Location
< ETag: W/"48-3r0bLwzjWi409jIuXDFQE7IoNtI"
< Strict-Transport-Security: max-age=63072000; includeSubdomains
< X-Content-Type-Options: nosniff
< Content-Encoding: gzip
<
* Connection #0 to host www.bookmarks.dev left intact
�V*K-*���S�R2�3�3P�QJ�, �H4��&��%������X&Z$[X&�Z����&��
ブックマークのCRUD操作.dev API
これらはいくつかの基本的なcURL HTTPコールで、いくつかのオプションがありました.今、それらを組み合わせて、生産準備APIに対して例を示します.例では、localhostで動作するAPIを使用します.あなたがからの指示に従うならば、それはDockerReadme ファイル.
APIは保護されていますKeycloak とベアラートークン.KeyCloakでベアラートークンを取得する方法は、クライアントのダイレクトアクセス補助を有効にすることですResource Owner Password Credentials
OAuth 2仕様では.したがって、フォームのパラメータ内でユーザーの資格情報が送信されます.もちろんcurlでもできます.
リクエスト
curl \
-d 'client_id=bookmarks' \
-d 'username=ama' \
-d "password=ama" \
-d 'grant_type=password' \
'http://localhost:8480/auth/realms/bookmarks/protocol/openid-connect/token' \
| jq .
Replace the
username
andpassword
with the ones you set up.
応答は次のようになります.
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJMNHV6eUFYbUlTSDJPRi00c2VZZ2Z3UWtJT204QTR3cnBDV0JHSVdOU2c4In0.eyJqdGkiOiJlY2I3YjE0Yi02ZTZhLTQyMzEtYWI5NS04ZDAwZmI5YjNiN2MiLCJleHAiOjE1ODM1MTg0OTUsIm5iZiI6MCwiaWF0IjoxNTgzNTE0ODk1LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojg0ODAvYXV0aC9yZWFsbXMvYm9va21hcmtzIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjRjNjE3ZjJiLTJiYWQtNDk4Yi1hOWM2LTRlOWE4YzMwMzc5OCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImJvb2ttYXJrcyIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6ImE5NGVjNGI3LTNhY2YtNGMzOS1iOTBlLTAzOWVlNzZjY2EwYiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiUk9MRV9VU0VSIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiQWRyaWFuIE1hdGVpIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYW1hIiwiZ2l2ZW5fbmFtZSI6IkFkcmlhbiIsImZhbWlseV9uYW1lIjoiTWF0ZWkiLCJlbWFpbCI6ImFkcmlhbm1hdGVpQGdtYWlsLmNvbSJ9.cymI5LzrUFje4vZNYMzvS0yhdVx4V8u_XVDUxi4sUk4tKpI2xcFQqWEiN_hxCLHpCDjNCqjw2JQUxQTvbQe_Wf8TGWz1f3nXhKg5CEw29ArCV3lFZL7_QmUOod53KnQ-9umSe2EISv2EbD0__idaivyCIerfV4M0wfgG31iyLPJ6_Pl_nJiw5RgifdqNljpKL9znpt5l3PiU7x2ACGv9V_GPvwAnU-9VxIuEqfErgc6IfhQxg9vuI_kHprXu-ClATA_Zg_xNEw53TD3qHJV_5sCu58MORhPv8fddcAZeLHxsr9sVyhFlmKMz1ZGWH0q5QZwLzKlGaaVr72Y2KSEPyA",
"expires_in": 3600,
"refresh_expires_in": 36000,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJiNDEwODA3My0yNjZiLTQ4YzAtOGJmYi04ZGJjZmE2NjYxMmEifQ.eyJqdGkiOiI0N2VhYzc3NS1mODdjLTRiYjMtODQxZi0wYTViZGZkMzIxZjYiLCJleHAiOjE1ODM1NTA4OTUsIm5iZiI6MCwiaWF0IjoxNTgzNTE0ODk1LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojg0ODAvYXV0aC9yZWFsbXMvYm9va21hcmtzIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo4NDgwL2F1dGgvcmVhbG1zL2Jvb2ttYXJrcyIsInN1YiI6IjRjNjE3ZjJiLTJiYWQtNDk4Yi1hOWM2LTRlOWE4YzMwMzc5OCIsInR5cCI6IlJlZnJlc2giLCJhenAiOiJib29rbWFya3MiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJhOTRlYzRiNy0zYWNmLTRjMzktYjkwZS0wMzllZTc2Y2NhMGIiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiUk9MRV9VU0VSIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSJ9.MNxMEtq5zcVTjxCnws5EotnfuUH7uY_kbKDwRRzGcko",
"token_type": "bearer",
"not-before-policy": 0,
"session_state": "a94ec4b7-3acf-4c39-b90e-039ee76cca0b",
"scope": "email profile"
}
JQとは本当に簡単に抽出することですaccess_token
:リクエスト
curl -s \
-d 'client_id=bookmarks' \
-d 'username=ama' \
-d "password=ama" \
-d 'grant_type=password' \
'http://localhost:8480/auth/realms/bookmarks/protocol/openid-connect/token' \
| jq -r '.access_token'
反応eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJMNHV6eUFYbUlTSDJPRi00c2VZZ2Z3UWtJT204QTR3cnBDV0JHSVdOU2c4In0.eyJqdGkiOiJiZDQzZWM1ZC1kODkyLTRkYzktOWNjYy03MWViOGE2YWI0MWEiLCJleHAiOjE1ODM1MTg2NTYsIm5iZiI6MCwiaWF0IjoxNTgzNTE1MDU2LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojg0ODAvYXV0aC9yZWFsbXMvYm9va21hcmtzIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjRjNjE3ZjJiLTJiYWQtNDk4Yi1hOWM2LTRlOWE4YzMwMzc5OCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImJvb2ttYXJrcyIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6ImY1ZmVkMjIzLTE0ZjQtNDJmZC04YTA5LWE1YWFmNWJmZjMzOCIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiUk9MRV9VU0VSIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiQWRyaWFuIE1hdGVpIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYW1hIiwiZ2l2ZW5fbmFtZSI6IkFkcmlhbiIsImZhbWlseV9uYW1lIjoiTWF0ZWkiLCJlbWFpbCI6ImFkcmlhbm1hdGVpQGdtYWlsLmNvbSJ9.EJzB7TkOrqY_enYHWgs_6NszI9PtQYfp5yco7OTF4LhcqkKXCoUvE2Jpc6gupX6uMtNPQZtWXSnwVPl8XGR4Z32sSMkxEvDj9B4zPuU2CBe8z9LZFwPjlu5ZMOnl1_hBjNmL8UHWTdCNhYf75PCDneCUM6ugbq5DaMhKkCHo8WD_x8A5I3hSM5pLSow3C82ZdMqkZbyxv28_rul9vsCsppN3CMXQjYDNn1UuVeNl8b5O-KTSumrVjVzw_wjoswva7h0Y3pnQptABDML5Q1mf__FFFHLGN6Y26Ezrjm086oRp-ntxFA9gI41toQ4xgoMyX-6obOhMGwa10RzdNbP4CA
カールオプション-d, --data
- HTTP(HTTP)は、ユーザーがHTMLフォームに記入して送信ボタンを押すと同じように、HTTPリクエストに指定されたデータをHTTPサーバーに送信します.これはCURLがコンテンツタイプを使用してサーバーにデータを渡す原因になりますapplication/x-www-form-urlencoded
. はてなブックマーク
リクエスト
curl -i -X POST "http://localhost:3000/api/personal/users/4c617f2b-2bad-498b-a9c6-4e9a8c303798/bookmarks" \
-H "accept: */*" -H "Authorization: Bearer eyJhbGciOiJ...." \
-H "Content-Type: application/json" -d "{\"name\":\"How to test a REST api from command line with curl – CodepediaOrg\",\"location\":\"https://www.codepedia.org/ama/how-to-test-a-rest-api-from-command-line-with-curl/\",\"language\":\"en\",\"tags\":[\"rest\",\"curl\",\"api\",\"testing\"],\"publishedOn\":\"2020-03-05\",\"sourceCodeURL\":\"https://github.com/CodepediaOrg/bookmarks.dev-api\",\"description\":\" In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP Requests against a REST API. For the purpose of this blog post I will be using the REST api that supports [www.bookmarks.dev](https://www.bookmarks.dev)\",\"descriptionHtml\":\"<p>In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP Requests against a REST API. For the purpose of this blog post I will be using the REST api that supports <a href=\\\"https://www.bookmarks.dev\\\">www.bookmarks.dev</a></p>\",\"userId\":\"4c617f2b-2bad-498b-a9c6-4e9a8c303798\",\"public\":true,\"lastAccessedAt\":\"2020-03-06T20:14:28.101Z\",\"likeCount\":0}"
Note the Bearer token is reduced here (
Bearer eyJhbGciOiJ....
) and in the following examples for brevity
反応
HTTP/1.1 201 Created
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, Location
Access-Control-Expose-Headers: Content-Type, Authorization, Location
Location: http://localhost:3000/api/personal/users/4c617f2b-2bad-498b-a9c6-4e9a8c303798/bookmarks/5e62b18b59770b5487a4c741
Content-Type: application/json; charset=utf-8
Content-Length: 79
ETag: W/"4f-26GcBfsvgN8d+T+zqql3Y5R+Rl8"
Date: Fri, 06 Mar 2020 20:24:44 GMT
Connection: keep-alive
{"response":"Bookmark created for userId 4c617f2b-2bad-498b-a9c6-4e9a8c303798"}
Note the
location
header - it contains the URL of the new created resource
リソースを読み込む
以前に作成されたブックマークを読んでください
location
ヘッダーcurl -s -X GET "http://localhost:3000/api/personal/users/4c617f2b-2bad-498b-a9c6-4e9a8c303798/bookmarks/5e62b18b59770b5487a4c741" \
-H "accept: application/json" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOi..." | jq .
反応{
"tags": [
"rest",
"curl",
"api",
"testing"
],
"_id": "5e62b18b59770b5487a4c741",
"name": "How to test a REST api from command line with curl – CodepediaOrg",
"location": "https://www.codepedia.org/ama/how-to-test-a-rest-api-from-command-line-with-curl/",
"language": "en",
"description": " In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP Requests against a REST API. For the purpose of this blog post I will be using the REST api that supports [www.bookmarks.dev](https://www.bookmarks.dev)",
"descriptionHtml": "<p>In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP Requests against a REST API. For the purpose of this blog post I will be using the REST api that supports <a href=\"https://www.bookmarks.dev\">www.bookmarks.dev</a></p>",
"publishedOn": "2020-03-05T00:00:00.000Z",
"sourceCodeURL": "https://github.com/CodepediaOrg/bookmarks.dev-api",
"userId": "4c617f2b-2bad-498b-a9c6-4e9a8c303798",
"public": true,
"likeCount": 0,
"youtubeVideoId": null,
"stackoverflowQuestionId": null,
"createdAt": "2020-03-06T20:24:43.998Z",
"updatedAt": "2020-03-06T20:24:43.998Z"
}
リソースの更新
リクエスト
curl -s -X PUT "http://localhost:3000/api/personal/users/4c617f2b-2bad-498b-a9c6-4e9a8c303798/bookmarks/5e62b18b59770b5487a4c741" \
-H "accept: application/json" -H "Authorization: Bearer eyJhbGciOiJSUzI1NiI..." \
-H "Content-Type: application/json" -d "{\"name\":\"How to test a REST api from command line with curl – CodepediaOrg\",\"location\":\"https://www.codepedia.org/ama/how-to-test-a-rest-api-from-command-line-with-curl/\",\"tags\":[\"rest\",\"curl\",\"api\",\"testing\"],\"publishedOn\":\"2020-03-05T00:00:00.000Z\",\"sourceCodeURL\":\"https://github.com/CodepediaOrg/bookmarks.dev-api\",\"description\":\"In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP requests against a REST API. For the purpose of this blog post I will be using the REST api that supports [www.bookmarks.dev](https://www.bookmarks.dev)\",\"public\":true,\"readLater\":false,\"language\":\"en\",\"youtubeVideoId\":null,\"stackoverflowQuestionId\":null,\"descriptionHtml\":\"<p>In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP requests against a REST API. For the purpose of this blog post I will be using the REST api that supports <a href=\\\"https://www.bookmarks.dev\\\">www.bookmarks.dev</a></p>\",\"updatedAt\":\"2020-03-06T20:42:53.706Z\",\"lastAccessedAt\":\"2020-03-06T20:42:53.706Z\",\"userId\":\"4c617f2b-2bad-498b-a9c6-4e9a8c303798\",\"_id\":\"5e62b18b59770b5487a4c741\"}" | jq .
反応{
"tags": [
"rest",
"curl",
"api",
"testing"
],
"_id": "5e62b18b59770b5487a4c741",
"name": "How to test a REST api from command line with curl – CodepediaOrg",
"location": "https://www.codepedia.org/ama/how-to-test-a-rest-api-from-command-line-with-curl/",
"language": "en",
"description": "In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP requests against a REST API. For the purpose of this blog post I will be using the REST api that supports [www.bookmarks.dev](https://www.bookmarks.dev)",
"descriptionHtml": "<p>In this post I will present how to execute GET, POST, PUT, HEAD, DELETE HTTP requests against a REST API. For the purpose of this blog post I will be using the REST api that supports <a href=\"https://www.bookmarks.dev\">www.bookmarks.dev</a></p>",
"publishedOn": "2020-03-05T00:00:00.000Z",
"sourceCodeURL": "https://github.com/CodepediaOrg/bookmarks.dev-api",
"userId": "4c617f2b-2bad-498b-a9c6-4e9a8c303798",
"public": true,
"likeCount": 0,
"youtubeVideoId": null,
"stackoverflowQuestionId": null,
"createdAt": "2020-03-06T20:24:43.998Z",
"updatedAt": "2020-03-06T20:43:53.582Z"
}
リソースの削除
リクエスト
curl -i -X DELETE "http://localhost:3000/api/personal/users/4c617f2b-2bad-498b-a9c6-4e9a8c303798/bookmarks/5e62b18b59770b5487a4c741"
-H "accept: */*" -H "Authorization: Bearer eyJhbGciOiJS...."
反応HTTP/1.1 204 No Content
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, Location
Access-Control-Expose-Headers: Content-Type, Authorization, Location
Date: Fri, 06 Mar 2020 20:53:37 GMT
Connection: keep-alive
}
204 OKのステータスは、すべての期待どおりに働いて示してください.削除を再度実行しようとすると、404リソースのNOTHERN状態が発生します.
反応
HTTP/1.1 404 Not Found
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, Location
Access-Control-Expose-Headers: Content-Type, Authorization, Location
Content-Type: application/json; charset=utf-8
Content-Length: 385
ETag: W/"181-i91X0uxhZ3uP0puyszvupTavBQA"
Date: Fri, 06 Mar 2020 20:55:27 GMT
Connection: keep-alive
{"httpStatus":404,"message":"Bookmark NOT_FOUND with id: 5e62b82a9206df5c2f274c3c","stack":"NotFoundError: Bookmark NOT_FOUND with id: 5e62b82a9206df5c2f274c3c\n at Object.deleteBookmarkById (/Users/ama/projects/dev/personal/bookmarks/bookmarks-api/src/routes/users/bookmarks/personal-bookmarks.service.js:164:11)\n at process._tickCallback (internal/process/next_tick.js:68:7)"}
The stacktrace is shown because we are in dev modus
結論
私は、ちょうどこのブログ柱の表面をひっくり返しています.チェックアウトcurl docs 更なる能力のために.
Reference
この問題について(curl残りのAPIコールを作成する例), 我々は、より多くの情報をここで見つけました https://dev.to/ama/curl-commands-examples-to-make-rest-api-calls-4gg3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol