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に対してヘッドを取得、取得、ポスト、プット、削除要求を削除します.

ヘッドリクエスト
リソースがサービス可能であるかどうかを確認するには、どのヘッダの種類や応答ヘッダに書かれた他の有用なメタ情報を、全体のコンテンツを転送する必要がなく、HEAD リクエスト.
私は、最新の公共のブックマークを要求するとき、私が何を得るかについて見たいです.次のヘッドリクエストをcurlで発行します.
リクエスト
curl -I https://www.bookmarks.dev/api/public/bookmarks
OR
curl -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 - サーバに渡す顧客ヘッダー
  • あなたがそれをきれいに表示したいならば、私はあなたがようなツールを使うことを提案しますjq :
    リクエスト
    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にさえあなたが求めるデータを出力します.
  • JQの代わりに使用することですPython マシンに持っているなら
    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 and password 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 更なる能力のために.