- HTTP POST and GET using cURL in linux
- You must log in to answer this question.
- Linked
- Related
- Hot Network Questions
- Subscribe to RSS
- 10 команд curl, которые вам следует знать
- RESTful API Requests from Client to Server via Command Line
- What is curl?
- Install curl
- To check to see if you have curl installed on your computer:
- GET request with curl
- What is a GET request?
- Example of a GET request
- Breaking down the GET request
- Where is the type of request?
- Do more?
- POST request with curl
- What is POST request?
- Example of a POST request
- Breaking down the POST request
- Sending data in the request body
- Sending the type of request
- Server side
- Send JSON data in POST Request
- PUT request with curl
- What is PUT request?
- Example of a PUT request
- Breaking down the PUT request
- Server side
- Send JSON data in PUT Request
- PATCH request with curl
- What is PATCH request?
- Example of a PATCH request
- Breaking down the PATCH request
- Server side
- DELETE request with curl
- What is DELETE request?
- Example of a DELETE request
- Breaking down the DELETE request
- Server side
- Want to learn more? Get 200+ courses and 2,000 hours in the Mammoth Unlimited Membership.
HTTP POST and GET using cURL in linux
Linux provides a nice little command which makes our lives a lot easier.
curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource
curl --data "param1=value1¶m2=value2" http://hostname/resource
curl --form "fileupload=@filename.txt" http://hostname/resource
curl -X POST -d @filename http://hostname/resource
For logging into a site (auth):
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login curl -L -b headers http://localhost/
the -H flag can also be used to delcare your content as «application/json» when posting data with -X POST
You must log in to answer this question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.14.43533
Ubuntu and the circle of friends logo are trade marks of Canonical Limited and are used under licence.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
10 команд curl, которые вам следует знать
Команда Mail.ru Cloud Solutions перевела статью, автор которой составил краткий справочник часто используемых команд curl для протоколов HTTP/HTTPS. Это не замена официального руководства по cURL, скорее, краткий конспект.
cURL (расшифровывается как Client URL) — программное обеспечение, которое предоставляет библиотеку libcurl и инструмент командной строки curl. Возможности cURL огромны, во многих опциях легко потеряться.
curl — инструмент для передачи данных с сервера или на него, при этом используется один из поддерживаемых протоколов: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET и TFTP. Команда предназначена для работы без взаимодействия с пользователем.
Команда curl запускается из командной строки и предустановлена в большинстве дистрибутивов Linux.
В основном я использовал curl для тестирования API, иногда просто вставляя команды, которые нашел в интернете. Но я хочу разобраться в curl и лучше понять его особенности. Так что поделюсь некоторыми командами, с которыми столкнулся во время работы.
Если никакие аргументы не указаны, то команда curl выполняет HTTP-запрос get и отображает статическое содержимое страницы. Оно аналогично тому, что мы видим при просмотре исходного кода в браузере.
Есть два варианта этой команды.
Еще можно скачать несколько файлов одной командой, хотя в мануале так делать не рекомендуют.
Если вы хотите посмотреть, какие заголовки отдает сервер, то можно использовать опции -I или -head. Они позволяют получить заголовок без тела документа.
curl -I https://www.google.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP=»This is not a P3P policy! See g.co/p3phelp for more info.» Date: Thu, 04 Jun 2020 15:07:42 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Expires: Thu, 04 Jun 2020 15:07:42 GMT Cache-Control: private Set-Cookie: 1P_JAR=2020-06-04-15; expires=Sat, 04-Jul-2020 15:07:42 GMT; path=/; domain=.google.com; Secure Set-Cookie:
Когда вы тестируете веб-приложение или API, то в вашем тестовом окружении могут быть самоподписанные или неправильные SSL-сертификаты. По умолчанию curl верифицирует все сертификаты. Чтобы он не выдавал ошибку о неверных сертификатах и устанавливал соединение для тестирования, используйте опцию -k или -insecure.
Иногда для тестирования API нужно отправить какие-либо данные, обычно это делают через POST-запрос. Если вы делаете POST-запрос при помощи curl, то можете отправить данные либо в виде списка имя=значение, либо в виде JSON.
Параметр —data эквивалентен -d, оба указывают curl выполнить HTTP POST-запрос.
Если curl не передаются никакие данные, то по умолчанию он выполняет HTTP GET запрос. Но если вам, например, нужно обновить данные, а не пересоздать их заново, то curl поддерживает опции, указывающие тип запроса. Параметры -x или —request позволяют указать тип HTTP-запроса, который используется для сообщения с сервером.
API защищено авторизацией по логину-паролю — вы можете передать пару логин-пароль, используя параметр -u или —user. Если просто передать логин, то curl запросит пароль в командной строке. Используете параметр несколько раз — для авторизации на сервер будет передано только последнее значение.
Вы хотите протестировать API перед развертыванием и перенаправить запрос на тестовую машину — это можно сделать, указав альтернативный резольв имени эндпоинта для данного запроса. Все работает эквивалентно пропиcыванию хоста в /etc/hosts.
О возможности загрузки файла через curl я узнал недавно. Не был уверен, что это возможно, но, по всей видимости, это так: curl с опцией -F эмулирует отправку заполненной формы, когда пользователь нажимает кнопку отправки. Опция указывает curl передавать данные в виде POST-запроса, используя multipart / form-data Content-Type.
Вы можете загрузить несколько файлов, повторяя параметр -F.
Вы можете использовать опцию -w для отображения информации в stdout после завершения передачи. Она поддерживает отображение набора переменных. Например, можно узнать общее время, которое потребовалось для успешного выполнения запроса. Это удобно, если вам нужно определить время загрузки или скачивания с помощью curl.
Это некоторые из опций, которые можно использовать с curl. Надеюсь, информация была вам полезна и статья понравилась.
RESTful API Requests from Client to Server via Command Line
Want to learn more? Get 250+ courses and 2,000 hours in the Mammoth Unlimited Membership.
What is curl?
curl is a tool to transfer data from or to a server
Install curl
To check to see if you have curl installed on your computer:
- Open your Terminal application (also called Command Line or Command Prompt)
- Enter the command: curl
- If you see, “Error: curl not found,” install curl.
GET request with curl
What is a GET request?
This type of HTTP request is for retrieving data.
Example of a GET request
Paste the following code into your Terminal (or Command Line) application to make a GET request from http://localhost:3000/api:
curl http://localhost:3000/api
Breaking down the GET request
- curl is the command to use the curl tool
- http://localhost:3000/api is the route from which you want to get data. You must replace this with whichever route your project uses to handle a GET request.
Your sever must listen for the client’s request of http://localhost:3000/api. The server’s response must be to display all the data in the database.
Note – Your server must handle each route that you visit, such as http://localhost:3000/api.
Where is the type of request?
The default HTTP request type is GET. Therefore, we don’t have to specify the type of request in the command.
Do more?
You can also use GET to retrieve one piece of data by an identifier, like a unique ID.
POST request with curl
What is POST request?
This type of HTTP request is for creating a new entry in a database.
Example of a POST request
curl -d “name=Alex&course=Unreal” -X POST http://localhost:3000/api/people
Breaking down the POST request
Sending data in the request body
- -d is the command to specify that the next code will be data (the body of your request).
- We need to send data containing the properties of the object we want to add to our database.
- 1 property of the object is name, which has the value Alex.
- Another property of the object is course, which has the value Unreal.
- Properties are separated with an ampersand (‘and’ symbol) &.
Sending the type of request
- -X is the command to specify that the next code will be the type of request sent.
- POST is the type of request we are sending, a POST HTTP request.
- http://localhost:3000/api/people is the route that handles posting data.
Server side
- Note – Your sever must listen for the client’s POST request of http://localhost:3000/api/people.
- The server’s response must be to take the data in the body of the request and put it into the project database.
Send JSON data in POST Request
curl -d '' -H "Content-Type: application/json" -X POST http://localhost:42212/products
- The property names can have any capitalization.
- Strings will be converted to integers if required.
- If your Terminal does not allow single quotes, you have to escape out of inner double quotes with a backslash.
PUT request with curl
What is PUT request?
This type of HTTP request is for updating an entry entirely in the database.
Example of a PUT request
curl -d “name=Alex&course=Excel” -X PUT http://localhost:3000/api/people/61326891216b79d8768c6edd
Breaking down the PUT request
- curl is the command to use the curl tool
- -d is the command to specify that the next code will be data (the body of your request).
- We need to send data containing the properties of the object we want to add to our database.
- 1 property of the object is name, which has the value John.
- Another property of the object is course, which has the value Excel.
- Properties are separated with an ampersand (‘and’ symbol) &.
- You must replace :id with an actual id of an entry in your database, such as 61326891216b79d8768c6edd.
- An ID is a unique identifier for each entry in your database.
- The ID value is known as a parameter of the request.
Server side
- Note – Your sever must listen for the client’s PUT request at http://localhost:3000/api/people/:id.
- The server must take in the parameter of the request, the ID, and find an entry in the database at that ID.
- If no entry exists, throw an error.
- Replace the old name and course Alex and Unreal with John and Excel.
Send JSON data in PUT Request
curl -d '' -H "Content-Type: application/json" -X PUT http://localhost:42212/products/2
PATCH request with curl
What is PATCH request?
This type of HTTP request is for updating 1 property of an entry in the database.
Example of a PATCH request
curl -d name=Mammoth -X PATCH http://localhost:3000/api/people/61326891216b79d8768c6edd
Breaking down the PATCH request
- curl is the command to use the curl tool
- -d is the command to specify that the next code will be data (the body of your request).
- We need to send data containing the properties of the object we want to add to our database.
- You must replace :id with an actual id of an entry in your database, such as 61326891216b79d8768c6edd.
- An ID is a unique identifier for each entry in your database.
- The ID value is known as a parameter of the request.
Server side
- Note – Your sever must listen for the client’s PATCH request at http://localhost:3000/api/people/:id.
- The server must take in the parameter of the request, the ID, and find an entry in the database at that ID.
- If no entry exists, throw an error.
- Replace the old name John with the new name Mammoth.
DELETE request with curl
What is DELETE request?
This type of HTTP request is for deleting an entry in a database.
Example of a DELETE request
curl -X DELETE http://localhost:3000/api/people/61325f4594bd88dec1e165cb
Breaking down the DELETE request
- curl is the command to use the curl tool
- -X is the command to specify that the next code will be the type of request sent.
- DELETE is the type of request we are sending, an HTTP DELETE request.
- http://localhost:3000/api/people/:id is the route that handles deleting data.
- You must replace :id with an actual id of an entry in your database, such as 61326891216b79d8768c6edd.
- An ID is a unique identifier for each entry in your database.
- The ID value is known as a parameter of the request.
Server side
- Note – Your sever must listen for the client’s DELETE request at http://localhost:3000/api/people/:id.
- The server must take in the parameter of the request, the ID, and find an entry in the database at that ID.
- If no entry exists, throw an error.
Want to learn more? Get 200+ courses and 2,000 hours in the Mammoth Unlimited Membership.