11-6号制作了一个在线查询席位的小程序 声明:本人小白一个纯分享,写出来巩固思路,不足之处,大佬多指教,谢谢! 用的是webapi使用 大致的思路是先webapi写一个查询数据库的程序, 再sqlite导入提前准备的表格,与程序进行交互无问题后, 进行网页编写(注意移动端界面部署),把做好的界面放到webapi下,确保本地无误(无跨域问题) 然后再云服务上面打相关的环境和打开对应接口,用的windowserver服务,打开iss挂载应用 然后把链接生成二维码,给宾客扫描查询座位。
一. web api代码解析 图文分享如下: 1.首先在Controllers文件夹下面写一个查询数据库的操作 用的get命令去获取
[ApiController]
[Route("Seat")]
public class SeatController : Controller {
[HttpGet("{name}")]
public ActionResult<string> Read(string name) {
var sqlString = SqliteGo(name);
if (sqlString.Contains(",")) {
return Ok(sqlString);
}
else {
return BadRequest(sqlString);
}
}
(1)注意 [Route(“Seat”)] 路由名称为Seat,会导致调用此方法后面加/Seat (2) [HttpGet("{name}")] 这个为路由get获取,程序会读name这个值 (3)SqliteGo为定义方法下面会详细介绍,此处为返回一个json的值 name和Seat 此处小结:当程序获取到name的时候会去调用SqliteGo的函数,去数据库查询并返回一个json,判断是否符合,符合返回 200 ok的json,不符合返回 400 bad的字符串。
2.SqliteGo的函数
private string SqliteGo(string name) {
string dbPath = AppContext.BaseDirectory + "11-6Seat.db";
CSQLiteHelper cSQLiteHelper = new CSQLiteHelper(dbPath);
string sqlString=cSQLiteHelper.SelectStars(name)[0];
if (sqlString.Contains(",")) {
var _sqlString = string.Format("{{\"seat\":\"{0}\",\"name\":\"{1}\"}}", sqlString.Split(',')[0], sqlString.Split(',')[1]);
sqlString = _sqlString;
}
return sqlString;
}
}
(1)CSQLiteHelper此处为自定义类,后面会详细介绍 (2)if这边进行判断,进行json打包 ps:此处json手动生成"{{“seat”:"{0}",“name”:"{1}"}}"
3.CSQLiteHelper
class CSQLiteHelper {
private string _dbName = "";
private string _SQLiteConnString = null;
public CSQLiteHelper(string dbPath) {
this._dbName = dbPath;
this._SQLiteConnString = "Data Source=" + dbPath;
}
public string[] SelectStars(string name) {
var cmd = new SQLiteCommand();
SQLiteConnection sqliteConn = new SQLiteConnection(_SQLiteConnString);
var strs = new List<string>();
try {
sqliteConn.Open();
string commandStr = string.Format("SELECT * FROM 'Seat' WHERE name IN('{0}')", name);
cmd.CommandText = commandStr;
cmd.Connection = sqliteConn;
var reader = cmd.ExecuteReader();
if (reader.Read()) {
string str = null;
if (reader.HasRows) {
for (int i = 0; i < reader.FieldCount; i++) {
str += (reader[i].ToString()) + ',';
}
}
strs.Add(str);
}
else {
strs.Add("未查到数据!请检查姓名或者去签到台确认!");
}
return strs.ToArray();此处不用数组也行,查询的指向的是单值
}
catch (Exception ex) {
throw new Exception(ex.Message);
}
finally {
cmd.Dispose();
sqliteConn.Close();
sqliteConn.Dispose();
}
}
}
(1)此处注意数据库 我写的格式是 (2)建议先在库里调式了命令,再把相关命令写入command里 (3)此处调用了sqlite,在nuget里
总结以上就是.net web APi后台程序所使用的,程序启用如下 注意前端html 放到 wwwroot文件下面,到时候iss挂载,直接ip:端口/index.html 就可以访问 app.UseFileServer();加入Startup.cs下面
二.前端网页编写
html,css,js篇 本人小白,此处不多介绍了,注意移动端app的使用界面即可 用的过时的jquery写的,感兴趣的可去下面链接的github获取
三.云服务器环境搭建
用的是华为云1个月的试用版,马上到期了。。下面简单介绍一下云使用 注意左上角区域,我这选择的是上海一,选错了,弹性公网ip都没 这里需要配置的是-访问控制-安全组-选择网卡对应的安全组-配置规则,进行对应端口映射,我添加的规则如下: 打开弹性网卡-更多-更改安全组 以上就是云服务,我做的操作。 然后通过弹性网卡ip,测试映射端口是否都通。
四.云服务器的环境搭建(window-server)
1.搭建iss 没啥好记录的,百度上都有。报错啥问题百度都能解决 https://blog.csdn.net/weixin_41692437/article/details/79991083 物理路径使用如下: 2. 几个.netCore环境包要装好 .https://dotnet.microsoft.com/download/dotnet/5.0 3.注意window防火墙和文件权限问题
五.二维码生成
把http链接填入 以下网站生成 https://www.wwei.cn
六 github 分享
https://github.com/HaoXuLC/SeatSearch
|