基于svelte前端和GO后端的rest风格API开发
时间: 2023-09-10 12:09:01 浏览: 241
好的,首先你需要搭建一个GO的后端服务,可以使用gorilla/mux等框架来实现restful API,然后使用Svelte来开发前端页面。
以下是一个简单的示例:
1. 首先,你需要创建一个GO项目并安装gorilla/mux框架:
```go
go mod init example.com/myproject
go get -u github.com/gorilla/mux
```
2. 创建一个路由处理程序来处理API请求:
```go
package main
import (
"encoding/json"
"log"
"net/http"
"github.com/gorilla/mux"
)
type User struct {
ID string `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
}
var users []User
func main() {
router := mux.NewRouter()
router.HandleFunc("/api/users", getUsers).Methods("GET")
router.HandleFunc("/api/users/{id}", getUser).Methods("GET")
router.HandleFunc("/api/users", createUser).Methods("POST")
router.HandleFunc("/api/users/{id}", updateUser).Methods("PUT")
router.HandleFunc("/api/users/{id}", deleteUser).Methods("DELETE")
log.Fatal(http.ListenAndServe(":8000", router))
}
func getUsers(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(users)
}
func getUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for _, user := range users {
if user.ID == params["id"] {
json.NewEncoder(w).Encode(user)
return
}
}
json.NewEncoder(w).Encode(&User{})
}
func createUser(w http.ResponseWriter, r *http.Request) {
var user User
_ = json.NewDecoder(r.Body).Decode(&user)
users = append(users, user)
json.NewEncoder(w).Encode(user)
}
func updateUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for index, user := range users {
if user.ID == params["id"] {
users[index] = User{
ID: user.ID,
Username: user.Username,
Email: user.Email,
}
json.NewEncoder(w).Encode(users[index])
return
}
}
}
func deleteUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for index, user := range users {
if user.ID == params["id"] {
users = append(users[:index], users[index+1:]...)
break
}
}
json.NewEncoder(w).Encode(users)
}
```
3. 接下来,你可以使用Svelte来创建前端页面:
```html
<!-- App.svelte -->
<script>
let users = [];
async function getUsers() {
const response = await fetch('/api/users');
users = await response.json();
}
</script>
<button on:click={getUsers}>Get Users</button>
<ul>
{#each users as user}
<li>{user.username} ({user.email})</li>
{/each}
</ul>
```
4. 最后,你需要将GO后端和Svelte前端连接起来。你可以通过将Svelte打包为静态文件并将其放置在GO的public目录中来实现此目的,然后在GO的main函数中添加以下代码:
```go
fs := http.FileServer(http.Dir("public"))
http.Handle("/", fs)
```
现在你可以启动GO程序并访问http://localhost:8000 来访问前端页面和API了。
阅读全文