【问题标题】:How to insert and update records in a database behind a cms using c# and directus api?如何使用 c# 和 directus api 在 cms 后面的数据库中插入和更新记录?
【发布时间】:2022-11-13 02:41:05
【问题描述】:

我想使用 c# 和 directus api 在 cms 中插入和更新记录。我不知道该怎么做。 我还需要使用 JWT 令牌来插入和更新 cms 中的记录。你能帮助我吗?

我已经描述了我需要知道如何使用 c# 和 directus api 在 cms 后面的数据库中更新和插入记录。我希望代码片段可以看到如何使用 c#、directus api 和 jwt 令牌进行发布和更新调用。

【问题讨论】:

    标签: c# jwt directus


    【解决方案1】:

    您好,您可以使用 HttpClient 的 Get 、 Post 和 Patch 方法来执行此操作, 下面你可以找到一个带有读取/插入/更新的草稿类(带有静态成员)(删除尚未实现,登录也没有......)

    对于身份验证,您应该从 directus 管理面板为用户生成一个令牌,然后将其作为参数传递给 Directus 类: (或者您可以使用返回身份验证令牌的用户名和密码实现登录)。

    你可以像这样使用它:

    // init once like this
    Directus.serverUrl = "http://192.168.1.100:8055";
    Directus.accessToken = "<past_your_access_token_here>";
    
    
    // then you can retrieve data like :
    string filter = "filter[status][_eq]=published&filter[field1][_eq]=value1";
    var response = await Directus.GetItems(ResReader.table, filter);
    var obj = JObject.Parse(response)
    
    /////
    
    var datarow = JObject.FromObject(new { 
       field1 = value1, 
       field2 = value2 
    });
    
    // insert
    await Directus.InsertItem("table_name",datarow);
    
    // update
    Directus.UpdateItem("table_name", "<id>", datarow));
    
    
    class Directus
    {
        public static HttpClient httpClient = new HttpClient();
        public static String? serverUrl;
        public static String? accessToken;
    
        public static void Auth()
        {
            if(httpClient.DefaultRequestHeaders.Authorization == null)
            {
                httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + Directus.accessToken);
            }
        }
    
        public static Task<string> GetItems(string? table, string? filters)
        {
            return GetAsync("/items/" + table , filters);
        }
    
        public static Task<HttpResponseMessage> InsertItem(string? table, JObject? item)
        {
            return PostAsync("/items/" + table, item);
        }
    
        public static Task<HttpResponseMessage> UpdateItem(string? table, string id, JObject? item)
        {
            return PatchAsync("/items/" + table + "/" + id, item);
        }
    
        private static Task<string> GetAsync(string? action, string? filters)
        {
            Auth();
            return httpClient.GetStringAsync(Directus.serverUrl + action + "?" + filters);
        }
    
        private static Task<HttpResponseMessage> PostAsync(string? action, JObject? item)
        {
            Auth();
            var content = new StringContent(item.ToString(), Encoding.UTF8, "application/json");
    
            Console.WriteLine("PostAsync Action : {0}", action);
            //Console.WriteLine(item.ToString());
    
            return httpClient.PostAsync(Directus.serverUrl + action , content);
        }
    
        private static Task<HttpResponseMessage> PatchAsync(string? action, JObject? item)
        {
            Auth();
            var content = new StringContent(item.ToString(), Encoding.UTF8, "application/json");
    
            Console.WriteLine("PatchAsync Action : {0}", action);
            //Console.WriteLine(item.ToString());
    
            return httpClient.PatchAsync(Directus.serverUrl + action , content);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 1970-01-01
      • 2013-02-06
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2019-06-28
      • 2020-07-11
      相关资源
      最近更新 更多