一.前言
前文讲到了OJ模块的设计思路,毫无疑问这是一个网络服务,我们先使用httplib,将源文件的路由功能实现,先把框架写好,后续再更改回调方法。
随后计划编写Modify模块,提供增删查改题库的功能(主要是查),所以在这之前,我们必须先构建一个题库。题库有文件和MySQL两种版本,我们暂时先写文件版的。
二.源文件路由功能
所谓的路由,即用户访问不同的URL,我们调用不同的方法来构建response,这需要我们在启动服务之前注册回调函数。
#include <iostream>
#include "../Common/httplib.h"
using namespace httplib;
int main()
{
Server svr;
//获取题目列表
svr.Get("/all_questions", [](const Request& req, Response& resp)
{
resp.set_content("这是所有题目的列表", "text/plain; charset=utf-8");
});
//根据题目编号,获取题目内容
svr.Get(R"(/questions/(\d+))", [](const Request& req, Response& resp)
{
std::string number = req.matches[1]; //拿到正则表达式匹配到的内容
resp.set_content("这是指定的一道题:" + number, "text/plain; charset=utf-8&