Pull to refresh

Comments 8

Одним из основных достоинств curl является то, что он предустанавливается во многих дистрибутивах.


Лично для себя я нашёл более удобную в плане интерфейса альтернативу — httpie.

Так можно ведь просто копировать сгенерированную swaggerui строку, где уже проставлены все необходимые ключи :)

Для быстрого тестирования curl подходит лучше, чем Axios в Node.js или настройка запроса в Postman, если вы знакомы с их синтаксисом.

С этим в корне не согласен, ту же авторизацию прописывать флагами в командной строке руками, когда можно двумя кликами в постмане поставить или вынести в переменную при использовании axios или других инструментов для запроса из js.

Постман ты не всегда можешь запустить на чужом сервере, например.
А команду curl можно запустить через ssh хоть с телефона.

Классная шпаргалка, спасибо!
Фишка, которую часто использую. Не совсем про curl, скорее про shell / bash script. Но и оригинальная статья не совсем про JS. :)

Внимание: в коде используется небезопасный eval, не копируйте это бездумно на важный прод!!!

Разделение по переменным STDOUT / STDERR / EXIT CODE в вызове curl из shell
call_curl () {
	# prepared command line for curl call
	CURLARGS="-i https://httpbin.org/get?answer=42"

	# Calling curl & capturing stdout, stderr and exit code using
	# tagging approach by Warbo, ref: http://stackoverflow.com/a/37602314
	CURLOUT=$({ { eval "curl $CURLARGS"; echo -e "EXITSTATUS:$?" >&2; } | sed -e 's/^/STDOUT:/g'; } 2>&1)
	CURLEXITSTATUS=$(echo "$CURLOUT" | grep "^EXITSTATUS:" | sed -e 's/^EXITSTATUS://g')
	CURLSTDOUT=$(echo "$CURLOUT" | grep "^STDOUT:" | grep -v "^EXITSTATUS:" | sed -e 's/^STDOUT://g')
	CURLSTDERR=$(echo "$CURLOUT" | grep -v "^STDOUT:\|^EXITSTATUS:")
	
	if [ $CURLEXITSTATUS -ne 0 ]; then
		echo -e "Error in curl: $CURLSTDERR" > /dev/stderr
		return 1;
	else
		# do something with $CURLSTDOUT and do output
		return 0;
	fi
}

Sign up to leave a comment.

Articles