【问题标题】:C# REST API query parserC# REST API 查询解析器
【发布时间】:2020-05-12 14:02:19
【问题描述】:

我正在学习,如何在 C# 中编写 rest api,我在查询字符串参数解析方面遇到了一些问题。

API 以这种方式工作: 1:我有 1 个端点 api/project,它可以在查询字符串中包含一些参数,例如: api/project?type=信息 或者 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 个条件。

你能给我小费吗,如何让它变得更好一点?

感谢所有提示!

【问题讨论】:

  • 您可以保留所需的参数,而不是全部默认,而是为不同的参数组合重载Get。这样您就可以省去参数检查。

标签: c# api rest query-string request.querystring


【解决方案1】:

您可以尝试传递所有必需的参数而忽略可选参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2019-10-03
    • 2017-07-03
    • 1970-01-01
    • 2017-03-28
    • 2015-10-05
    相关资源
    最近更新 更多