c# - C# REST API 查询解析器
问题描述
我正在学习,如何在 C# 中编写 rest api 并且我在查询字符串参数解析方面遇到了一些问题。
API 以这种方式工作: 1:我有 1 个端点 api/project 可以在查询字符串中包含一些参数,例如:api/project?type=informational 或 api/project?project_id=1&user_id=2
此端点函数接受参数,并根据用户调用的参数调用其他函数,这些函数根据查询字符串过滤信息。
所以端点函数看起来很谎言:
[HttpGet]
[Route("api/project")]
public HttpResponseMessage projects(string type = "1", string project_id = "1", string user_id = "1" ....)
{
try
{
if (type != "1")
{
return getProjectsByType(type);
}
else if (project_id != "1" && user_id != "1")
{
return getProjectsByIds(project_id, user_id);
}
else
{
return Request.CreateResponse(System.Net.HttpStatusCode.OK);
}
}
catch (Exception e)
{
return Request.CreateErrorResponse(System.Net.
HttpStatusCode.BadRequest, "Something went wrong");
}}
所以函数会查看 if 语句并检查值。如果它找到不是默认值且与条件匹配的值,它会调用过滤信息的方法。
问题有点明显,查询字符串的解析逻辑有效,但它确实不是很好的代码,特别是如果用户可能添加 50 个不同的参数,则需要 50 个条件。
你能给我小费吗,如何让它变得更好一点?
感谢所有提示!
解决方案
您可以尝试传递所有必需参数而忽略可选参数。
推荐阅读
- sql - 在 alter table 中将 json 转换为 text[]
- mysql - 在sql数据库中查找最近的坐标
- python - 如何使用 anaconda 在 python 中从 Requirement.txt 安装软件包?
- ruby-on-rails - 在 Heroku 上部署 Ruby on Rails 项目失败 - 您已从 Gemfile 中删除:* pg
- excel - VBA 绕过剪贴板
- python - 如何使用 PySimpleGUI 将值随机放入 100 个按钮中的 10 个?
- yugabyte-db - 无法使用 yugabyted 初始化 YEDIS API
- powershell - 在 Azure Devops 管道中导入模块命令行
- c - Libmicrohttpd - 如何设置 keep-alive 标头
- ios - 无法从其模块接口构建模块