• خانه
  • وبلاگ
  • راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

 تاریخ انتشار :
/
  وبلاگ
راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API


Dynamics AX یک برنامه اختصاصی است که توسط مایکروسافت برای پردازش و راه حل های ERP ایجاد شده است. دارای سیستم های داخلی است که به شرکت ها کمک می کند تا سیستم های پردازش داده خود را سازماندهی، خودکار و بهینه کنند. یکی از جنبه های پردازش داده، ادغام یکپارچه آنها با سایر برنامه های اکوسیستم ERP است.

ایجاد این ارتباط بین برنامه ها با API انجام می شود. به طور کلی، Restful API زمانی قابل استفاده است که شما نیاز به ادغام بین دو برنامه داشته باشید. در این وبلاگ، من به مراحل ایجاد یک Restful API برای ادغام با Microsoft Dynamics AX Data و نحوه آزمایش آن با استفاده از Postman نگاه کردم.

آرام API

Restful API برای ادغام دو برنامه با هم استفاده می شود تا آنها در هماهنگی مناسب کار کنند. اگر علاقه مند به ایجاد برنامه ASP .NET خود هستید، Restful API ابزار مهمی برای کمک به شما در انجام آن خواهد بود.

فرمت URL API Restful این است: {Localhost: IP / Domain site} / api / {Controller}

مواد و روش ها:

روش های مورد نیاز برای ایجاد Restful API عبارتند از:

روش ایجاد آرام API

یک برنامه ASP.Net ایجاد کنید

برنامه ASP.NET خود را در آن بسازید ویژوال استودیو 2015 و مراحل زیر را دنبال کنید در اینجا مراحل مورد نیاز برای رسیدن به این هدف وجود دارد:

  1. قابل اعتماد و متخصص فایل > جدید > پروژه
  2. انتخاب کنید دسته پروژه Visual C # و سپس ASP.NET Web Application (.NET Framework) را انتخاب کنید.
  3. پروژه خود را نام ببرید RestAPI و کلیک کنید خیلی خوب
  4. انتخاب کنید خالی الگوی پروژه را کلیک کنید و روی OK کلیک کنید (برای افزودن پیوندهای اصلی کادرها را علامت نزنید)

بسته های NuGet را اضافه کنید

برای مرحله بعدی باید چند مورد را بردارید بسته های NuGet. برای نصب آنها از دستورات زیر در کنسول Package Manager استفاده کنید:

  • بسته نصب Microsoft.AspNet.WebApi
  • بسته نصب Microsoft.Owin.Host.SystemWeb
  • بسته نصب Microsoft.AspNet.WebApi.OwinSelfHost

یک کلاس شروع اضافه کنید

حالا روی پروژه خود کلیک راست کرده و انتخاب کنید افزودن> کلاس و آن را به عنوان نامگذاری کنید Startup.cs. کد زیر را کپی کرده و در فایل جدید پیست کنید:

using System.Web.Http;
using Newtonsoft.Json.Serialization;
using Owin;

namespace RestAPI
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            config.Formatters.Remove(config.Formatters.XmlFormatter);
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;
            app.UseWebApi(config);
        }
    }
}

در کد بالا، قسمت‌هایی که با رنگ زرد مشخص شده‌اند برای حذف XmlFormatter (که فرمت‌کننده خروجی پیش‌فرض است) و در عوض پیکربندی استفاده می‌شوند. JsonFormatter برای نام اموال شتر و برای استفاده زمان UTC برای تاریخ ها.

API داده استاتیک

یک کنترلر اضافه کنید

حالا باید a اضافه کنید کنترل کننده پوشه ها به پروژه شما وقتی کارتان تمام شد، روی پوشه Controllers کلیک راست کرده و انتخاب کنید افزودن> موارد جدید سمت چپ را انتخاب کنید Visual C #> Web> Web API. سپس بر روی کلیک کنید کلاس کنترلر Web API (نسخه 2.1)نام ببرید Controller.csو کلیک کنید اضافه کردن.

اکنون باید یک کنترلر با متدهایی برای آن داشته باشید بگیر، پست، قرار دادمو حذف لیست اقلام. بیایید آن را آزمایش کنیم.

مطبوعات F5 برای اجرای API خود پس از باز شدن مرورگر، اضافه کنید / api / listitems به انتهای URL بروید و فشار دهید وارد

یک مدل اضافه کنید

من می آفرینم – درست می کنم منبع و ASP.NET اقدامات Web API

حالا اجازه دهید این API کار مفیدی انجام دهد. برای این بخش، یک منبع برای یک آیتم لیست ایجاد می‌کنید و تمام اقدامات کنترلر را به هم پیوند می‌دهید تا بتوانید موارد را ایجاد، بخوانید، به‌روزرسانی و حذف کنید.

ادامه دهید و a ایجاد کنید مدل ها در پروژه خود پوشه کنید و a اضافه کنید CustomListItem.cs کلاس می بایست شبیه به این باشه:

ساختار CustomListItem.cs باید با توجه به داده های منتشر شده تعریف شود.

در زیر CustomListItem.cs برای مرجع شما آمده است:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace RestAPI.Models
{
    public class CustomListItem
    {
        public int Id { get; set; }
        public string Text { get; set; }
    }
}

متدهای دریافت / ارسال را به کنترلر اضافه کنید

برگشت به مال شما ListItemsController کلاس، a اضافه کنید دارایی استاتیک خصوصی برای ذخیره آیتم های لیست خود در حافظه اموال خصوصی را به اعلان کلاس اضافه کنید.

private static List<CustomListItem> _listItems { get; set; } = new List<CustomListItem>();
You will also need to add a using statement to the top of the controller.
using RestAPI.Models;
To read items, update the Get method as shown below:
public IEnumerable<CustomListItem> Get()
 {
            return _listItems;
 }
To create items, update the Post method as specified below:
public HttpResponseMessage Post([FromBody]CustomListItem model)
{
            if (string.IsNullOrEmpty(model?.Text))
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
            var maxId = 0;
            if (_listItems.Count > 0)
            {
                maxId = _listItems.Max(x => x.Id);
            }
            model.Id = maxId + 1;
            _listItems.Add(model);
            return Request.CreateResponse(HttpStatusCode.Created, model);
}

برنامه را ایجاد و اجرا کنید و روش انتشار Postman را به صورت زیر آزمایش کنید:

روش رو بگیر

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

روش انتشار

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

پس از انتشار یک روش دریافت کنید

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

API با داده های AX

یک کنترلر اضافه کنید

حالا باید a اضافه کنید پوشه کنترلر به پروژه شما سپس روی پوشه Controllers راست کلیک کرده و انتخاب کنید افزودن> آیتم جدیدسمت چپ را انتخاب کنید Visual C #> Web> Web API. سپس بر روی کلیک کنید کلاس کنترلر Web API (نسخه 2.1)نام ببرید Controller.csو کلیک کنید اضافه کردن.

اکنون باید یک کنترلر با متدهایی برای آن داشته باشید بگیر، پست، قرار دادمو حذف لیست اقلام. بیایید آن را آزمایش کنیم.

مطبوعات F5 برای اجرای API خود پس از باز شدن مرورگر، اضافه کنید / api / AxTrainings به انتهای URL بروید و فشار دهید وارد

یک مدل اضافه کنید

من می آفرینم – درست می کنم منبع و ASP.NET اقدامات Web API

اضافه کردن AxTrainings کلاس در RestAPI.Models، همانطور که در زیر نشان داده شده است:

public class AXTrainings
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string TrainingDate { get; set; }
 }

با استفاده از کانکتور تجاری به AX متصل شوید

برای اتصال به کانکتور تجاری، مانند شکل زیر، یک مرجع به فایل dll Business Connectors از پوشه Bin کلاینت AX اضافه کنید:

ج: فایلهای برنامه (x86) 60 مشتری Bin

بیانیه استفاده را به صورت زیر اضافه کنید:

استفاده از Microsoft.Dynamics.BusinessConnectorNet.

متدهای دریافت / ارسال را به کنترلر اضافه کنید

برگشت به مال شما کنترلر AxTrainings کلاس، a اضافه کنید دارایی استاتیک خصوصی برای ذخیره آیتم های لیست خود در حافظه اموال خصوصی را به اعلان کلاس اضافه کنید.

private static List<AXTrainings> _AxTrainings { get; set; } = new List<AXTrainings>();

شما همچنین باید یک را اضافه کنید استفاده از بیانیه به بالای کنترلر

using RestAPI.Models;

برای خواندن AxTrainings از AX، متد Get را به صورت زیر به روز کنید:

public IEnumerable<AXTrainings> Get()
        {
            // return new string[] { "value1", "value2" };
            AXTrainings objAXTrainings;
            Axapta ax;
            AxaptaRecord axRecord;

            string tableName = "Dev_Trainings";
            string strId = "Id";
            string strName = "Name";
            string strTrainingDate = "TrainingDate";

            object fieldId, fieldName, fieldTrainingDate;
            
            try
            {

                ax = new Axapta();
                ax.Logon("USMF", "en-us", "TAURUS", null);
                _AxTrainings.Clear();
                using (axRecord = ax.CreateAxaptaRecord(tableName))
                {
                    axRecord.ExecuteStmt("select * from %1 ");
                    
                    while (axRecord.Found)
                    {
                        fieldId = axRecord.get_Field(strId);
                        fieldName = axRecord.get_Field(strName);
                        fieldTrainingDate = axRecord.get_Field(strTrainingDate);
                        objAXTrainings = new AXTrainings();
                        objAXTrainings.Id = fieldId.ToString();
                        objAXTrainings.Name = fieldName.ToString();
                        objAXTrainings.TrainingDate = fieldTrainingDate.ToString();

                        _AxTrainings.Add(objAXTrainings);
                        
                        axRecord.Next();
                    }
                }
                return _AxTrainings;
            }

            catch (Exception e)
            {
                //return e.Message;                
            }
            return _AxTrainings;


        }

برای ایجاد AxTraining، متد Post را به صورت زیر به روز کنید:

public HttpResponseMessage Post([FromBody]AXTrainings objAXTrainings)
        {
            
            Axapta ax;
            AxaptaRecord axRecord;
            string tableName = "Dev_Trainings";

            if (string.IsNullOrEmpty(objAXTrainings?.Name))
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
            // insert record in ax
            try
            {

                ax = new Axapta();
                ax.Logon("USMF", "en-us", "TAURUS", null);
                _AxTrainings.Clear();
                using (axRecord = ax.CreateAxaptaRecord(tableName))
                {

                    axRecord.set_Field("Id", objAXTrainings.Id);
                    axRecord.set_Field("Name", objAXTrainings.Name);
                    axRecord.set_Field("TrainingDate", objAXTrainings.TrainingDate);
                    
                    // Commit the record to the database.
                    axRecord.Insert();
                    
                }
                return Request.CreateResponse(HttpStatusCode.Created, objAXTrainings);
            }
            
            catch (Exception e)
            {
                objAXTrainings = new AXTrainings();
                return Request.CreateResponse(HttpStatusCode.Created, objAXTrainings);
            }
            
        }

برنامه را ایجاد و اجرا کنید و روش انتشار Postman را به صورت زیر آزمایش کنید:

روش رو بگیر

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

روش انتشار

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

پس از انتشار یک روش دریافت کنید

راهنمای گام به گام ایجاد یک Restful Dynamics AX Data API

لینک مرجع:

https://developer.okta.com/blog/2019/03/13/build-rest-api-with-aspnet-web-api

قلاب وب:

Webhook ابزاری است که بلافاصله پس از وقوع یک رویداد خاص، داده ها را از یک برنامه به برنامه دیگر تحویل می دهد. Webhook برای دریافت داده های بلادرنگ بین دو برنامه استفاده می شود.

خلاصه کردن

انجام تمام مراحل ذکر شده در بالا به شما کمک می کند تا برنامه ASP .NET خود را بدون مواجهه با خطاهای معمولی ایجاد کنید. امیدواریم این وبلاگ برای روشن کردن همه چیز در مورد فرآیند توسعه ASP .NET مفید بوده باشد. لطفاً در تماس با مهندسان ما در DEV IT برای هرگونه مشکل در حال انجام در مرحله توسعه تردید نکنید.

راهنمای گام به گام ایجاد یک API آرامش بخش برای داده های Dynamics AX برای اولین بار در مجله DEV IT ظاهر شد.