cURL을 알아봅시다.

너는 왜 또 갑자기 curl을 정리했느냐.

  • 왜 갑자기 cURL인가요? 라고 물으실 것 같습니다. blockchain을 좀 파고 있었는데, 중간에서 블록체인을 만들고, mining하고 할 때 http프로토콜을 이용하거든요. 그런데 이때, 터미널에서 curl 이라는 커맨드를 사용합니다. 그래서 이 아이는 무엇인가? 하고 조금 정리를 해봤습니다.

what is cURL.

  • 언제나 정보는 이미 위키피디아에 나와 있습니다. 이를 조금 정리하면 다음과 같아요.

URL is a computer software project providing a library and command-line tool for transferring data using various protocols.

  • 데이터를 다양한 프로토콜(http, ftp 등)에 맞춰서 전송할 수 있는 라이브러리와 커맨드라인 툴이다 라는 이야기죠. 라이브러리야 파이썬에서도 requests라는 좋은 라이브러리가 있습니다만, 커맨드라인 툴이라는 건 이야기가 다릅니다.
  • 예를 들면 다음처럼 bash에서 실행할 수 있습니다(저의 경우는 따로 설치하지 않았는데 이미 설치되어 있더군요).
  • 단순하게 curl + url 을 아래처럼 입력하면,
curl https://gist.githubusercontent.com/frhyme/22b8f1dddb53462ca24e9c89f2589e26/raw/fcb152089ac4b65605b3a9e76490bff8e569cb93/gistfile1.txt
  • 아래처럼 해당 url의 텍스트를 모두 긁어옵니다.
## this is test for curl
## second line
## by frhyme
  • 즉, 이미 우리가 알고 있던 python에서의 request lib와 매우 유사하게 동작한다고 할 수 있습니다.

curl in python

  • 물론, 요즘의 사람들은 command line에서 작업하는 일보다, IDE에서 작업하는 일들이 더 많다고(우물안 개구리인 저는 이렇게 말합니다). 따라서 IDE에서 curl을 직접 사용해보도록 할게요(물론, requests를 쓰는게 더 좋을 수도 있습니다만)

  • 아래 코드에서 보시는 것처럼 subprocess를 이용하면, bash command를 직접 실행해볼 수 있습니다. 또한 그 결과를 리턴받아서, utf-8로 디코딩해서 출력해봅수도 있죠. 출력 결과는 매우 길어서 굳이 집어넣지는 않았습니다.

import subprocess

for cmd in ['curl https://en.wikipedia.org/wiki/CURL']:
    output = subprocess.check_output(cmd, shell=True).decode('utf-8').strip()
    print("## command: {}".format(cmd))
    print(output)
    print("-"*30)

wrap-up

  • 저는 그냥 ‘이렇게 할 수 있다’ 정도만 소개한 것이고, 실제로는 해당 프로토콜을 통해 데이터를 읽어와서 데이터를 쓰고, 다른 파일에 쓰고, 하는 등 여러 가지가 가능해요. 상세한 사용법은 여기를 참고하시면 좋습니다.

reference

댓글남기기