当前位置: 首页 > news >正文

珠海做网站哪家专业中国搜索

珠海做网站哪家专业,中国搜索,wordpress后台邓丽,wordpress随机推前言 📢博客主页:程序源⠀-CSDN博客 📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正! 一、环境准备、示例介绍 Go语言安装,GoLand编辑器 这个示例实现了一个简单的待办事项(todo&#xf…

前言

📢博客主页:程序源⠀-CSDN博客
📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!

一、环境准备、示例介绍

Go语言安装,GoLand编辑器

 这个示例实现了一个简单的待办事项(todo)管理系统。

目录详情

新建一个fiber-todos文件夹,在目录中新建如下文件

二、代码编写

采用分层架构搭建一个简单的Web服务有助于提高代码的可维护性和可扩展性。我们将把应用程序分为以下几个层次:

  1. Handler(处理器层):处理HTTP请求。

  2. Service(服务层):包含业务逻辑。

  3. Repository(仓库层):处理数据访问逻辑。

  4. Model(模型层):定义数据结构。

2.1  Handler(处理器层)

package handlerimport ("fiber-todos/model""fiber-todos/service""github.com/gofiber/fiber/v2"
)type TodoHandler struct {service service.TodoService
}func NewTodoHandler(service service.TodoService) *TodoHandler {return &TodoHandler{service: service}
}func (h *TodoHandler) GetTodos(c *fiber.Ctx) error {todos := h.service.GetAllTodos()return c.JSON(todos)
}func (h *TodoHandler) GetTodoByID(c *fiber.Ctx) error {id := c.Params("id")todo, found := h.service.GetTodoByID(id)if !found {return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Todo not found"})}return c.JSON(todo)
}func (h *TodoHandler) CreateTodo(c *fiber.Ctx) error {todo := new(model.Todo)if err := c.BodyParser(todo); err != nil {return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Cannot parse JSON"})}createdTodo := h.service.CreateTodo(*todo)return c.Status(fiber.StatusCreated).JSON(createdTodo)
}func (h *TodoHandler) UpdateTodo(c *fiber.Ctx) error {id := c.Params("id")todo := new(model.Todo)if err := c.BodyParser(todo); err != nil {return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Cannot parse JSON"})}updatedTodo, found := h.service.UpdateTodo(id, *todo)if !found {return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Todo not found"})}return c.JSON(updatedTodo)
}func (h *TodoHandler) DeleteTodo(c *fiber.Ctx) error {id := c.Params("id")deleted := h.service.DeleteTodo(id)if !deleted {return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Todo not found"})}return c.SendStatus(fiber.StatusNoContent)
}

2.2 Service(服务层)

package serviceimport ("fiber-todos/model""fiber-todos/repository"
)type TodoService interface {GetAllTodos() []model.TodoGetTodoByID(id string) (model.Todo, bool)CreateTodo(todo model.Todo) model.TodoUpdateTodo(id string, todo model.Todo) (model.Todo, bool)DeleteTodo(id string) bool
}type todoService struct {repo repository.TodoRepository
}func NewTodoService(repo repository.TodoRepository) TodoService {return &todoService{repo: repo}
}func (s *todoService) GetAllTodos() []model.Todo {return s.repo.GetAll()
}func (s *todoService) GetTodoByID(id string) (model.Todo, bool) {return s.repo.GetByID(id)
}func (s *todoService) CreateTodo(todo model.Todo) model.Todo {return s.repo.Create(todo)
}func (s *todoService) UpdateTodo(id string, todo model.Todo) (model.Todo, bool) {return s.repo.Update(id, todo)
}func (s *todoService) DeleteTodo(id string) bool {return s.repo.Delete(id)
}

2.3 Repository(仓库层)

package repositoryimport ("fiber-todos/model""github.com/google/uuid"
)type TodoRepository interface {GetAll() []model.TodoGetByID(id string) (model.Todo, bool)Create(todo model.Todo) model.TodoUpdate(id string, todo model.Todo) (model.Todo, bool)Delete(id string) bool
}type InMemoryTodoRepository struct {todos []model.Todo
}func NewInMemoryTodoRepository() TodoRepository {return &InMemoryTodoRepository{todos: []model.Todo{},}
}func (r *InMemoryTodoRepository) GetAll() []model.Todo {return r.todos
}func (r *InMemoryTodoRepository) GetByID(id string) (model.Todo, bool) {for _, todo := range r.todos {if todo.ID == id {return todo, true}}return model.Todo{}, false
}func (r *InMemoryTodoRepository) Create(todo model.Todo) model.Todo {todo.ID = uuid.New().String()r.todos = append(r.todos, todo)return todo
}func (r *InMemoryTodoRepository) Update(id string, updatedTodo model.Todo) (model.Todo, bool) {for i, todo := range r.todos {if todo.ID == id {r.todos[i].Title = updatedTodo.Titler.todos[i].Done = updatedTodo.Donereturn r.todos[i], true}}return model.Todo{}, false
}func (r *InMemoryTodoRepository) Delete(id string) bool {for i, todo := range r.todos {if todo.ID == id {r.todos = append(r.todos[:i], r.todos[i+1:]...)return true}}return false
}

2.4 Model(模型层)

package modeltype Todo struct {ID    string `json:"id"`Title string `json:"title"`Done  bool   `json:"done"`
}

三、运行结果

在终端中打开项目,运行项目

go run main.go

再打开一个新的终端

这里使用 Invoke-WebRequest 发送 POST 请求

$headers = @{"Content-Type" = "application/json"
}$body = @{"title" = "Learn Fiber""done" = $false
} | ConvertTo-JsonInvoke-WebRequest -Uri "http://localhost:3000/todos" -Method POST -Headers $headers -Body $body

解析:

Headers 字典创建:

$headers = @{"Content-Type" = "application/json"
}

Body 对象创建:

$body = @{"title" = "Learn Fiber""done" = $false
} | ConvertTo-Json

发送 POST 请求:

curl -X POST http://localhost:3000/todos -H "Content-Type: application/json" -d '{"title": "Learn Fiber", "done": false}'

响应结果:

 成功发送了 POST 请求

http://www.fp688.cn/news/142311.html

相关文章:

  • 网站建设公司招聘宁海关键词优化怎么优化
  • 上海网站优化哪家好任何小说都能搜到的软件
  • 专做蔬菜水果的网站网站的优化与推广分析
  • 网站职位推荐怎么做微信crm客户管理系统
  • 网站建设费入什么科目百度seo不正当竞争秒收
  • 芜湖做网站昆明关键词优化
  • 动态网站建设常用的APP东莞seo建站哪家好
  • 网站单页生成器西安网站建设哪家好
  • 做返利网站能赚钱搜索引擎优化名词解释
  • 做网站时如何给文字做超链接亚洲长尾关键词挖掘
  • 做网站的安全证书手机百度搜索引擎入口
  • 网站下载音乐网站查询域名入口
  • 网站建设外包服务管理情况西安 做网站
  • 建设快三网站nba今日数据
  • 兰州市做网站的公司有哪些seo网络推广是干嘛的
  • 英语网站如何做社群品牌营销策划案例
  • 做网站每年需要购买域名吗seo泛目录培训
  • 贵阳花果园网站建设怎么给自己的公司建立网站
  • 属于b2b电子商务网站的是品牌seo推广咨询
  • 自建站价格深圳英文站seo
  • amazon亚马逊官方网站网店运营实训报告
  • 网站上的图用美图秀秀做可以吗怎样推广app别人才愿意下载
  • 苏州市高新区建设局官方网站seo百度推广
  • 网站如何备案 流程图查排名的软件有哪些
  • 美食网站开发环境广州营销推广
  • 养殖网站源码网络广告发布
  • 网站推广定义什么是网店推广
  • 营销型网站的建设方案小学生收集的新闻10条
  • 厦门国外网站建设公司哪家好自动优化句子的软件
  • 国家重大建设项目库网站电话宁波 seo整体优化