首页 > 解决方案 > 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 个条件。

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

感谢所有提示!

标签: c#apirestquery-stringrequest.querystring

解决方案


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


推荐阅读