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

``` :::note 本教程由 [@tatadan](https://twitter.com/tatadan) 友情提供,是他们的 [Wails Examples Repository](https://github.com/tataDan/wails-v2-examples) 的一部分。 ::: 在本教程中,我们将开发一个应用程序,从网络上检索狗的照片,然后显示它们。 ### 创建项目 让我们创建应用程序。 从终端输入:`wails init -n dogs-api -t svelte` 注意:如果您想添加 IDE 支持,我们可以选择在此命令的末尾添加 `-ide vscode` 或 `-ide goland`。 现在让我们 `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`。