다음과 같은 것을 상상해보세요:
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
이 작업을 수행할 수 있는 도구가 있나요?
답변1
많은 Linux/Unix 시스템에서는 경로가 실제로 전체 URL이어야 하지만 의사 코드는 모든 셸에서만 실행됩니다.
예를 들어 Debian 기반 시스템에서 이 패키지는 libwww-perl
lwp-request 및 lwp-request라는 lwp-request에 대한 세 개의 기호 링크를 /usr/bin/GET
설치 /usr/bin/HEAD
합니다 /usr/bin/POST
. 기능은 여러분이 기대하는 바로 그것입니다. OpenSuse 패키지의 최신 버전에는 심볼릭 링크(버그일 수 있음)가 생략되어 있으므로 직접 생성하거나 직접 사용해야 perl-libwww-perl
합니다 . lwp-request
일반적으로 말하자면, 수년 동안 유닉스 시스템에서 GET, HEAD 및 POST 실행 파일을 사용할 수 있다고 상당히 안전하게 가정할 수 있었습니다.
물론 이러한 모든 작업에도 사용할 수 있으므로 curl
bash와 같은 명령줄 셸이 대화형이 아닌 것처럼 느끼는 이유를 이해하지 못할 수도 있습니다.
답변2
답변해 주셔서 감사합니다.
구글링 끝에 찾아낸나머지, 이는 쉘 스크립트 래퍼입니다.곱슬도구. 이것이 바로 제가 원하는 것입니다. 여기에는 155줄의 쉘 스크립트가 있으며 이를 실행하면 GET, PUT, POST, DELETE 및 OPTIONS에 대한 기능이 표시됩니다. 이 함수는 내 경로에서 찾은 컬 프로그램을 둘러싼 래퍼일 뿐입니다.
MacOSX bash에서 작동하는 방법은 다음과 같습니다.
$ . resty
$ resty https://api.example.org
https://api.myhost.com*
$ GET /v1/o/orgname -u myusername:password
{
"createdAt" : 1347007133508,
"createdBy" : "admin",
"displayName" : "orgname",
"environments" : [ "test", "prod" ],
"lastModifiedAt" : 1347007133508,
"lastModifiedBy" : "admin",
"name" : "orgname",
"properties" : {
"propertyList" : [ ... ]
},
}
$
첫 번째 줄은 현재 셸의 명령만 실행합니다.
"resty" 명령의 다음 줄은 URL 기본 주소를 설정합니다. 그 이후에는 GET, PUT, POST...에 대한 모든 호출이 암시적으로 이 베이스를 참조합니다. 예쁜 JSON을 내보내는 예를 보여줍니다. 서버가 축소된 JSON을 내보내는 경우 출력을 파이핑하여 외부 스크립트를 사용하여 인쇄할 수 있다고 생각합니다.
호스트 기반 기본 설정이 지원됩니다. 대상 호스트가 api.example.org라고 가정합니다. ~/.resty/api.example.org라는 파일을 생성하고 해당 이름으로 호스트에 수행되는 각 컬 호출에 전달되어야 하는 매개변수를 지정하는 행을 거기에 삽입하십시오. 각 http 동사에는 자체 줄이 있습니다. 따라서 파일에 다음을 삽입하십시오.
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
...api.example.org가 기본 호스트 이름일 때 GET 작업을 수행할 때마다 컬 명령은 여기에 표시된 -u
및 --write-out
인수를 암시적으로 사용한다는 의미입니다. (-u는 기본 인증을 의미합니다).
또 다른 예로, XML이 항상 요청되도록 파일에 Accept 헤더를 지정할 수 있습니다.
GET --header "Accept: application/xml"
이 기본 설정 파일은 모든 컬 명령줄 인수를 지원합니다. 호스트+동사 튜플에 대한 모든 컬 매개변수는 기본 설정 파일에서 한 줄에 있어야 합니다.
편리한.
답변3
FTP:
$ lftp http://repo.xplico.org/pool/
cd ok, cwd=/pool
lftp repo.xplico.org:/pool> ls
drwxr-xr-x -- /
drwxr-xr-x - 2012-02-13 09:48 main
lftp repo.xplico.org:/pool> cd main
lftp repo.xplico.org:/pool/main> ls
drwxr-xr-x -- ..
drwxr-xr-x - 2012-02-13 09:48 x
디렉토리 목록은 디렉토리 색인을 보내는 사이트에만 적용됩니다. 그러나 그렇지 않은 경우에도 get
명령을 사용하여 개별 파일을 가져올 수 있습니다.
답변4
예, "--config" 옵션을 사용할 수 있습니다:
컬이 stdin에서 파일을 읽도록 하려면 파일 이름을 -K로 지정하고 --config를 '-'로 지정합니다.
예:
$ curl -K-
url https://github.com/blog
remote-name
<Ctrl + D>