--- sidebar_position: 20 --- # Dogs API ```mdx-code-block

``` :::note 이 튜토리얼은 [@tatadan](https://twitter.com/tatadan)에 의해 제공되었습니다. 그리고 [ Wails 예시 리포지토리](https://github.com/tataDan/wails-v2-examples)에서 예시를 확인할 수 있습니다. ::: 이 튜토리얼에서는 웹에서 개 사진을 검색한 다음 표시하는 애플리케이션을 개발할 것입니다. ### 프로젝트 생성 애플리케이션을 생성합니다. 터미널에 다음과 같이 입력합니다: `wails init -n dogs-api -t svelte` 참고: 원하는 경우 선택적으로 이 명령의 끝에 `-ide vscode` 또는 `-ide goland`를 추가할 수 있습니다. IDE 지원을 추가합니다. 이제 `cd dogs-api`를 만들고 프로젝트 파일 편집을 시작합니다. ### 사용하지 않는 코드 제거 사용하지 않는 몇가지 요소를 제거합니다. - `app.go`를 열고 다음 줄을 제거합니다. ```go // Greet returns a greeting for the given name func (a *App) Greet(name string) string { return fmt.Sprintf("Hello %s, It's show time!", name) } ``` - `frontend/src/App.svelte`를 열고 모든 줄을 삭제합니다. - `frontend/src/assets/images/logo-universal.png` 파일을 삭제합니다. ### 우리만의 애플리케이션 생성하기 이제 새로운 Go 코드를 추가합니다. 함수 정의 앞에 다음 구조체 선언을 `app.go`에 추가합니다. ```go type RandomImage struct { Message string Status string } type AllBreeds struct { Message map[string]map[string][]string Status string } type ImagesByBreed struct { Message []string Status string } ``` `app.go`에 다음 함수를 추가합니다(함수 정의 뒤쪽에 존재): ```go func (a *App) GetRandomImageUrl() string { response, err := http.Get("https://dog.ceo/api/breeds/image/random") if err != nil { log.Fatal(err) } responseData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var data RandomImage json.Unmarshal(responseData, &data) return data.Message } func (a *App) GetBreedList() []string { var breeds []string response, err := http.Get("https://dog.ceo/api/breeds/list/all") if err != nil { log.Fatal(err) } responseData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var data AllBreeds json.Unmarshal(responseData, &data) for k := range data.Message { breeds = append(breeds, k) } sort.Strings(breeds) return breeds } func (a *App) GetImageUrlsByBreed(breed string) []string { url := fmt.Sprintf("%s%s%s%s", "https://dog.ceo/api/", "breed/", breed, "/images") response, err := http.Get(url) if err != nil { log.Fatal(err) } responseData, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } var data ImagesByBreed json.Unmarshal(responseData, &data) return data.Message } ``` `app.go`의 `import` 섹션을 다음과 같이 수정합니다. ```go import ( "context" "fmt" "encoding/json" "io/ioutil" "log" "net/http" "sort" ) ``` `frontend/src/App.svelte`에 다음 줄을 추가합니다. ```html

Dogs API

Click on down arrow to select a breed

{#if showRandomPhoto} No dog found {/if} {#if showBreedPhotos} {#each photos as photo} No dog found {/each} {/if} ``` ### 애플리케이션 테스트하기 바인딩을 생성하고 애플리케이션을 테스트하려면 `wails dev`를 실행합니다. ### 애플리케이션 컴파일하기 응용 프로그램을 단일 바이너리로 컴파일하려면 `wails build`를 실행합니다.