Golang之我想写个"web框架"-7: 完成一个“留言小demo”

简介: Golang之我想写个"web框架"-7: 完成一个“留言小demo”

demo设想

我们想完成一个“留言小demo”,证明我们的"web框架"还是能够完成某种工作的, 该工具主要有3个方法,分别为 新增数据、查询全部记录、查询某条记录。



接口文档


数据存放

数据直接放置在程序内存中即可


新增数据

请求标题 参数值
请求方式 POST
请求地址 /addIndex
上传参数 title标题 node记录
响应数据:成功 状态码: 200 文本: ${title}已经提交成功!
响应数据:失败 状态码: 400 文本: 上传数据有误


查询全部记录

请求标题 参数值
请求方式 GET
请求地址 /queryAll
上传参数
响应数据:成功 状态码: 200 文本: 查询到的JSON数组数据
响应数据:失败 状态码: 500 文本: 服务器出错!


搜索查询记录

请求标题 参数值
请求方式 GET
请求地址 /queryOne
上传参数 key 查询的参数
响应数据:成功 状态码: 200 文本: 查询到的JSON数组数据
响应数据:失败 状态码: 500 文本: 服务器出错!
响应数据:失败 状态码: 400 文本: 上传数据有误!



编码


数据存放

我们可以定义一个结构体,用于存放该数据,且在全局定义该类型数据。

image.png


路由定义

我们如上在接口文档中,已经设计了3个方法,分别为 新增数据、查询全部记录、查询某条记录。我们定义路由信息如下:

image.png


如上代码我们定义了3种路由,除了/addIndexPOST请求外,其他2个都是GET请求。而后,我们仅需完善后面三个函数即可。


新增记录

image.png


如上代码我们从客户端获取titlenode的数据,若数据获取失败,则返回客户端 上传数据有误 ,若都接收到数据,则我们申请一个IndexNode,来存放该数据,最后将该数据加到留言组中去。



查询全部数据

image.png

这个较为简单,我们仅需将IndexNodes给序列化后,直接返回客户端即可,若josn序列化失败,则返回给客户端: "服务器出错"



搜索查询记录

image.png


如上代码,我们从客户端获取key,若获取失败,则向客户端返回 上传数据有误, 而后我们定义一个新的IndexNode数组类型用以存放我们搜索到的数据。


在搜索中,我们先搜搜标题数据,而后搜索内容,当包含key,我们则加如数组中,最后序列化为json数据,返回给客户端,若序列化失败,则返回 “服务器出错”

\


测试

我们测试使用curl工具,加linux json软件jq


新增数据


本次测试,我们准备了几条记录,分别为:

title=每日必记&node=记得上下班打卡
title=每日必做&node=每小时必须喝一杯300ml水
title=临时任务&node=博客编写


我们使用curl添加命令如下

curl -s -X POST -d "title=每日必记&node=记得上下班打卡" 127.0.0.1:8082/addIndex
 curl -s -X POST -d "title=每日必做&node=每小时必须喝一杯300ml水" 127.0.0.1:8082/addIndex
 curl -s -X POST -d "title=临时任务&node=博客编写" 127.0.0.1:8082/addIndex

image.png


查询全部数据

我们使用curl访问/queryAll获取全部数据,而后使用jq初始化一下。

命令:

curl -s 127.0.0.1:8082/queryAll | jq


image.png


搜索查询记录

我们将上传每日作为关键字,查询记录。

命令:

curl -s '127.0.0.1:8082/queryOne?key=每日' | jq


image.png



总结


代码上传到: gitee.com/pdudo/golea… , 在本篇中,我们已经看了如何使用我们自己写的“web框架”来编写一个简单的demo,怎么样,我们自定义的“web”框架还可以吧,快来试试吧。



相关文章
|
5天前
|
设计模式 开发框架 数据库
Python Web开发主要常用的框架
【5月更文挑战第12天】Python Web开发框架包括Django、Flask、Tornado和Pyramid。Django适用于复杂应用,提供ORM、模板引擎等全套功能;Flask轻量级,易于扩展,适合小型至中型项目;Tornado擅长处理高并发,支持异步和WebSockets;Pyramid灵活强大,可适配多种数据库和模板引擎,适用于各种规模项目。选择框架需依据项目需求和技术栈。
122 2
|
2天前
|
缓存 监控 安全
Django框架在大型Web应用中的架构设计与实战
【5月更文挑战第18天】Django框架在构建大型Web应用中扮演重要角色,采用分层架构(数据、业务逻辑、表示层)和多应用组织模式,结合缓存策略(如Memcached、Redis)提升性能。通过异步处理、分布式部署提高响应速度和扩展性。关注数据分区、安全设计及监控日志,确保系统高效、稳定。Django为复杂业务提供坚实基础,助力打造卓越Web系统。
18 7
|
2天前
|
开发框架 中间件 数据库
Django 框架入门全攻略:轻松构建 Web 应用
【5月更文挑战第18天】本文是 Django 入门教程,介绍了如何使用 Django 构建 Web 应用。内容包括安装、项目与应用创建、模型定义、数据库迁移、视图编写、路由配置、模板系统、表单处理和中间件的使用。通过实例展示了 Django 基本流程,帮助初学者快速上手。Django 提供高效工具,便于开发者聚焦业务逻辑,轻松构建功能丰富的 Web 应用。
19 5
|
2天前
|
存储 缓存 API
Flask 框架在大型 Web 应用中的使用与挑战
【5月更文挑战第18天】Flask框架适用于快速开发轻量级Web应用,但用于大型应用时需应对性能、代码管理和团队协作的挑战。通过集成扩展处理复杂需求,使用蓝图组织代码,以及引入缓存优化性能,结合明确的代码规范和开发流程,可有效应对挑战,构建高效稳定的应用。
18 5
|
2天前
|
数据库连接 Python
Flask 框架入门与实践:构建你的第一个 Web 应用
【5月更文挑战第18天】本文介绍了使用 Flask 框架构建第一个 Web 应用的步骤。首先通过 `pip install Flask` 安装框架,然后编写基本的 Python 代码创建应用,包括定义路由和响应。示例展示如何显示 "Hello, World!",并扩展到显示用户信息的功能。利用模板(如 `index.html`)可使页面更丰富。随着学习深入,可以利用 Flask 的更多特性,如表单处理和数据库连接,来构建更复杂的 Web 应用。本文旨在激发读者对 Flask 和 Web 开发的兴趣,鼓励不断探索和实践。
15 7
|
5天前
|
JavaScript 前端开发 数据可视化
Svelte Web 框架介绍
Svelte Web 框架介绍
8 0
|
5天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
13 1
|
5天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
8 0
|
5天前
|
机器学习/深度学习 JSON 编译器
C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
39 1
|
5天前
|
JSON Go 数据格式
golang学习7,glang的web的restful接口结构体传参
golang学习7,glang的web的restful接口结构体传参