---
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}
{/if}
{#if showBreedPhotos}
{#each photos as photo}
{/each}
{/if}
```
### 创建应用程序
要生成绑定并测试应用程序,请运行 `wails dev`。
### 编译应用程序
要将应用程序编译为单个可用于生产的二进制文件,请运行 `wails build`。