# 라이브러리 'libcurl'

> Clean Markdown view of GeekNews topic #13102. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=13102](https://news.hada.io/topic?id=13102)
- GeekNews Markdown: [https://news.hada.io/topic/13102.md](https://news.hada.io/topic/13102.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-01-30T09:56:57+09:00
- Updated: 2024-01-30T09:56:57+09:00
- Original source: [everything.curl.dev](https://everything.curl.dev/libcurl/libcurl)
- Points: 3
- Comments: 1

## Topic Body

### --libcurl 사용하기

- **libcurl 사용 권장**: 사용자들은 먼저 curl 명령줄 도구를 사용하여 원하는 전송을 시도하고, 원하는 대로 대략 작동하면 명령줄에 `--libcurl [파일명]` 옵션을 추가하여 다시 실행하도록 권장됨.
- **코드 생성**: `--libcurl` 명령줄 옵션은 제공된 파일 이름으로 C 프로그램을 생성함. 이 C 프로그램은 libcurl을 사용하여 curl 명령줄 도구가 수행한 전송을 실행함.
- **예외와 차이점**: 항상 100% 일치하지는 않지만, 사용하고자 하는 libcurl 옵션과 추가 인자에 대한 훌륭한 영감을 제공할 수 있음.

### 예시 코드

- **실행 예시**: `curl http://example.com --libcurl example.c` 명령을 실행하면 현재 디렉토리에 `example.c` 파일이 생성됨.
- **생성된 코드**: 생성된 코드에는 `curl_easy_setopt()`을 사용한 다양한 옵션 설정이 포함되어 있으며, 일부 옵션은 소스로 쉽게 생성되지 않아 사용자가 직접 구현하거나 사용하지 않을 수 있음.

### GN⁺의 의견

- **libcurl의 유용성**: 이 기능은 개발자들이 명령줄에서 작동하는 curl 명령을 C 프로그램으로 쉽게 변환할 수 있게 해주어, libcurl을 사용하는 응용 프로그램 개발을 가속화함.
- **코드 생성의 장점**: 자동으로 생성된 코드는 개발자가 libcurl API를 더 빠르게 이해하고 적용하는 데 도움이 될 수 있음.
- **학습 도구로서의 가치**: 초급 소프트웨어 엔지니어에게 libcurl 옵션과 네트워크 프로그래밍의 실제 적용 사례를 보여주는 좋은 학습 자료가 될 수 있음.

## Comments



### Comment 22661

- Author: neo
- Created: 2024-01-30T09:56:57+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=39175873) 
- 브라우저의 네트워크 탭에서 관심 있는 요청을 찾아 "curl로 복사"하는 패턴이 유용함. 이를 통해 curl 명령어를 생성하고, 해당 명령어를 사용하는 언어의 요청 코드로 변환할 수 있는 사이트(curlconverter.com)를 활용할 수 있음. curl은 다른 언어로 번역할 수 있는 "중간 표현"과 같은 역할을 함.
- 커맨드 라인 인터페이스에 프로그램의 소스 코드를 출력하는 플래그가 있는 것은 매우 멋진 기능임. 이는 마치 차의 후드를 열어 내부를 보여주는 것과 같아서, 작동 방식을 더 잘 이해하고 필요에 맞게 변경할 수 있게 해줌. 사용자가 원하는 대로 조정하거나 추가할 수 있어 사용자 친화적임.
- 마이크로소프트 오피스의 비주얼 베이직 매크로가 성공한 이유 중 하나는 이와 같은 기능 때문임. 워드, 엑셀 등에서 작업을 수행한 후 생성된 매크로를 코드로 사용자의 필요에 맞게 커스터마이징할 수 있음. 이는 간단하면서도 강력한 개념이며, curl에서도 이를 볼 수 있음.
- curl을 컴파일하기 위해서는 libcurl에 링크하도록 지시해야 함. 예를 들어 gcc에서는 `-lcurl` 옵션을 사용함. 이를 통해 IP 주소를 출력하고 `ip_fetcher.c` 파일을 생성할 수 있으며, gcc로 컴파일 후 실행 파일을 통해 IP 주소를 얻을 수 있음.
- Hurl은 libcurl을 사용하는 오픈 소스 CLI로, HTTP 요청을 테스트하기 위해 플레인 텍스트를 사용함. libcurl의 안정성과 최상의 기능(HTTP/3 포함)을 활용하며, 요청 연결, 응답에서 데이터 캡처 및 전달, 응답 테스트(JSONPath, XPath 등)와 같은 기능을 추가함. REST/SOAP/GraphQL API에 대한 요청을 위한 문법적 편의성을 제공하지만, 핵심은 libcurl임. Verbose 옵션을 사용하면 curl 명령어를 grep할 수 있음.
- ffmpeg에서도 이와 같은 기능이 가능하기를 바람.
- Daniel Stenberg는 세부 사항과 개발자/사용자 경험에 매우 신경을 쓰며, 이러한 세심한 정성이 놀랍다고 평가됨.
- Daniel Stenberg가 직접 curl 커맨드 라인 옵션 대부분을 설명하는 3시간짜리 비디오에서 이 옵션에 대해 언급됨.
- 제출 제목에는 두 개의 하이픈(`--`)이 사용되어야 하며, em-dash와 하이픈(`—-`)의 조합은 올바르지 않음.
- ChatGPT의 등장으로 이제 curl 실행 파일에 반쯤 만들어진 quines를 포함할 필요가 없어져 이 기능이 구식이 되었다는 AI 열성 지지자의 열정적인 의견 제시됨.
