0

上周我发布了这个问题,给出的答案是 AtTask API 确实有一个设定的限制,要改变这个,需要使用“$$LIMIT”,正如AtTask 网站所解释的那样。

这非常有帮助,除了我不确定在哪里放置“$$LIMIT”,因为我使用的是 C#,而 AtTask C# 示例不包含此内容。我一直在 AtTask 开发人员网站上寻找解决方案,但一直空手而归。

如何在 C# 中使用此代码来提高调用限制?

编辑

我之前的问题中包含的代码示例:

JToken projects = client.Search(ObjCode.PROJECT, new {groupID = userGroupID});
foreach (var j in projects["data"].Children())
{
    Console.WriteLine("# " + counter + " Name: {0}", j.Value<string>("name")); 
    counter++;
}
4

1 回答 1

0

看起来他们的 API 将传递给 Search() 的第二个参数的对象转换为查询字符串参数。所以在你的例子中

client.Search(ObjCode.PROJECT, new {groupID = userGroupID});

创建以下网址(123 代表您的组 ID)。

GET /attask/api/project/search?groupID=123

因此,要将 $$LIMIT 添加到 url,请将 $$LIMIT 添加到对象。不幸的是,C# 不允许在名称中使用 $。所以我的建议是稍微修改他们的 C# API。首先将您对 Search() 的调用更改为此

client.Search(ObjCode.PROJECT, new {groupID = userGroupID, __Limit = 200 });

然后,在 AtTaskRestClient.cs 中,将文件末尾的 parameterObjectToStringArray() 更改为以下内容。

private string[] parameterObjectToStringArray(object parameters, params string[] toAdd) {
    var properties = parameters.GetType().GetProperties();
    List<string> p = new List<string>(properties.Length);
    p.AddRange(toAdd);
    foreach(var prop in properties) {
        string propName = prop.Name;
        if (propName.StartsWith("__"))
        {
            propName = "$$" + propName.Substring(2);
        }
        string line = string.Format("{0}={1}", propName, prop.GetValue(parameters, null));
        p.Add(line);
    }
    return p.ToArray();
}

此更改还将允许您使用以 $$ 开头的其他参数,例如 $$FIRST。

于 2015-07-27T20:10:01.207 回答