Samuel Dague
Samuel Dague

Reputation: 11

RestRequest Parameters adding logic

I am having some issues finding information about adding some logic field in my RestRequest using V 107. I am trying to add a filter to my GET query

dl_document_indexed_date gt '2020-12-07T08:30:42.483Z'

There are a few other queries in the call which i am using Dictionary<string, string> to store them, and it works great however it only works if i am looking for something equal to, as adding it to the parameters it seems by default its equal to and i am not finding any way to add any other logic, gt/ge/lt/le etc. using the older version i would just append the url adding the logic i need, but i am not seeing a way to append the url either. Looking over their documentation i either missed it, cant find it, or its not there. Any help would be greatly appreciated! My method looks like this

    public static async Task<string> GET_API(String RequestUrl, string RequestObject, Dictionary<string, string> parameters)
    {
            var request = new RestRequest(RequestObject);
            var options = new RestClientOptions(RequestUrl)
            {
                ThrowOnAnyError = true,
                Timeout = -1
            };
            var client = new RestClient(options);
            client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator("Bearer " + TokenManager.GetAccessTokenString("TRN"));

            foreach (var parameter in parameters)
            {
                request.AddQueryParameter(parameter.Key, parameter.Value);
            }

            var response = await client.GetAsync(request);
            return response.Content.ToString();
    }

I send the BaseURL , the RequestObject would be table i am calling in the base URL, and my dictionary item contains the Field name, and the field values that i am dynamically generating on another method that would append the string. and example would be

 parameters.Add("dl_document_name", "TableA");

which would append the URL with dl_document_name eq 'TableA' it would call the API after i add the OAuth Token i create and return the data i need and send it back. or another option i guess could be appending the string with the logic i need to return the data

Upvotes: 1

Views: 628

Answers (2)

Samuel Dague
Samuel Dague

Reputation: 11

I figured out a work around, if i only have one i can add it to the first parameter and adding the filter as the first key, which will work unless i have multiple conditions that are not eq

  parameters.Add("filter","dl_document_indexed_date gt '2020-12-07T08:30:42.483Z'");

Upvotes: 0

Kvble
Kvble

Reputation: 294

You should use OData, it's easy to implement and it has different kind of filters, you also can set which filters are usable and which aren't.

https://www.odata.org/

Upvotes: 0

Related Questions