단지 URI에서 데이터를 얻는 간단한 작업
자체 제작에 사용되는 도구군에 대해 RESTful API의 데이터 수집 코드는 곳곳에 개별적으로 적혀 있었고, 복사 붙여넣기에도 지칠 뻔했기 때문에'가져오기'기능만을 위한 별도의 패키지로 잘라내기로 했다.
우선 GET에만 집중한다.예를 들어 이렇게 쓸 수 있는 포장을 사용하세요.
sample.go
// +build run
package main
import (
"context"
"fmt"
"io"
"net/http"
"os"
"github.com/spiegel-im-spiegel/fetch"
)
func main() {
githubUser := "spiegel-im-spiegel"
u, err := fetch.URL("https://api.github.com/users/" + githubUser + "/gpg_keys")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
resp, err := fetch.New(fetch.WithHTTPClient(&http.Client{})).
Get(
u,
fetch.WithContext(context.Background()),
fetch.WithRequestHeaderSet("Accept", "application/vnd.github.v3+json"),
)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
defer resp.Close()
if _, err := io.Copy(os.Stdout, resp.Body()); err != nil {
fmt.Fprintln(os.Stderr, err)
}
}
이것 괜찮아요?$ go run sample.go | jq -r '.[]|select(.key_id=="B4DA3BAE7E20B81C")|.raw_key'
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQSuBFF8+hcRDAClgJHjXcpxJhhx2aaxQEF/V6ds8DL358hk2TRXmpcpwBmjSCB4
cW/soISF6vzPQgWNvZjaPwWfrwWRjMsfk/9XfDtibvIgqShtS5Nc/p6/wxOMHh6x
...
에 따르면 OpenPGP 공공 키는 GiitHub 사이트에서 꺼냈다.(무엇을 할 때는 이전에 쓴 "GitHub에 등록된 OpenPGP 공개 키 체크 아웃"을 참조하십시오.)
OAuth와 같은 인증 기능이 있는 것이 아니라 유니버설 포장으로도 사용할 수 없다고 생각합니다net/http. 저는 사용 포장에 흔히 볼 수 있는 오류와 취약성이 쉽게 나타나지 않도록 쓰려고 합니다.
cURL as DSL
위의 샘플 코드는 다음curl 명령줄과 기본적으로 같습니다.
$ curl "https://api.github.com/users/spiegel-im-spiegel/gpg_keys" -H "Accept: application/vnd.github.v3+json"
라기보다는 먼저'API 사양'인curl 명령의 예가 있고 그에 따라 코드를 쓰는 경우가 많다.사실, 이 이름도 한마디로'cURL as DSL'도구나 서비스가 있는데, 저는 줄곧 당신의 보살핌을 받았습니다."cURL as DSL"은curl의 명령선 Go,Python,node입니다.js, Java, PHP, Vim script 등의 코드로 변환할 수 있습니다.
그러나 "cURL as DSL"자체는 이미 유지되지 않은 것 같고, 같은 서비스로서
라고 추천했다.여기에는 더 많은 언어가 대응하고 있다.
이런 도구를 사용한 계기는 2015년'cURL as DSL'을 공개한 시부가와 요시키 씨의 다음 글에서
특히
이 도구를 생각해낸 계기는 Google Chrome의 개발자 도구인 Copyas cURL 메뉴입니다.cURL 형식으로 복사할 수 있다면, cURL 명령은 많은 사용자들이 쉽게 만들 수 있습니다.나는 이것이 교류의 수단이라고 생각한다.군더더기라도 자동으로 생성되는 것은 비프로그래머들에게도 드문 선택이다.Excel의 VBA든 Flash의 JSFL이든 프로그래머가 아닌 사람들이 많이 씁니다.
파이톤, 루비, 노드도 있다.js를 사용한 적이 있는 사람들은 상호작용 모드,irb,REPL 등 환경의 편의성을 잘 이해했다.만약 cURL이 전파되고 웹 페이지의 문서에 cURL의 위조 코드를 쓰면 cURL은 HTTP계의 REPL이 될 수 있다.
이 부분은 당시에 강력히 동의했다.
간단하게 말하면curl 명령줄의 예와 사용할 수 있는 매개 변수의 일람표가 있다면 인코딩할 수 있습니다.PA-AIv5 클라이언트측 패키지 제작때도 아마존 씨가 컬의 샘플 코드를 공개했기 때문에 이해하기 쉬운 면(그리고 PHP 코드. 자바의 코드 상세 내용이 숨겨져 있는데 무슨 이유인지 w)을 부인할 수 없었다.
따라서 향후 RESTful API 사양이 공개될 경우 반드시curl로 작성해 주시기 바랍니다.🙇 아니, 시대는 GraphiQL이지(웃음)
관련 링크
참고서
Reference
이 문제에 관하여(단지 URI에서 데이터를 얻는 간단한 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/spiegel/articles/20210113-fetch텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)