Issue
My test curl command to post a simple new article content type was working fine in Drupal 8.9.20 but after I upgraded to Drupal 9.3.0, that command no longer works. It returned the following error message:
{"message":"No route found for \u0022POST \/entity\/node\u0022"}
Solution
After wasting more than half a day searching for a solution and almost want to give up the upgrade to Drupal 9, I found the following ambiguous statement from https://www.drupal.org/node/2098511.
Prior to Drupal 8.3.0, instead of /node POST to /entity/node - deprecated and will be removed in Drupal 9.
I played around and instead of using ${BOT_DOMAIN}/entity/node
, I used ${BOT_DOMAIN}/node
and it works. My final curl command is:
curl --include \ --request POST \ --user "${BOT_USERNAME}:${BOT_PASSWORD}" \ --header 'Content-type: application/hal+json' \ ${BOT_DOMAIN}/node?_format=hal_json \ --data-binary "@${json_file}"