电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.WebApi.从零开发自定义WebApi接口

来源:金蝶云社区作者:金蝶2024-09-234

二开案例.WebApi.从零开发自定义WebApi接口

【应用场景】

开发自定义WebApi接口,实现个性化需求。



【案例演示】

添加自定义WebApi接口,实现定义接口、调用接口、传入参数、访问数据库、返回数据等功能。



【实现步骤】

<1>添加自定义WebApi接口类,代码如下。

using Kingdee.BOS.App.Data;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.WebApi.ServicesStub;
using System;
namespace Jac.XkDemo.BOS.WebApi
{
    /// <summary>
    /// 【WebApi】自定义WebApi接口
    /// </summary>
    public class CustomWebApiDemoWebApiService : AbstractWebApiBusinessService
    {
        public CustomWebApiDemoWebApiService(KDServiceContext context)
            : base(context)
        {
            //
        }
        /// <summary>
        /// 测试接口
        /// 不需要使用上下文,不需要访问数据中心,则不需要客户端登录
        /// </summary>
        /// <param name="arg1">参数1</param>
        /// <param name="arg2">参数2</param>
        /// <returns>返回请求方法和请求参数</returns>
        public object DoSth(string arg1, int arg2)
        {
            var responseDto = new
            {
                ApiName = System.Reflection.MethodInfo.GetCurrentMethod().Name,
                Args = new object[] { arg1, arg2 }
            };
            return responseDto;
        }
        /// <summary>
        /// 测试接口2
        /// 需要使用上下文,需要访问数据中心,则需要客户端登录
        /// </summary>
        /// <param name="arg1">参数1</param>
        /// <param name="arg2">参数2</param>
        /// <returns>返回登录用户名和请求方法和请求参数</returns>
        public object DoSth2(string arg1, int arg2)
        {
            var ctx = KDContext.Session.AppContext;
            if (ctx == null)
            {
                // 会话超时,需重新登录
                throw new Exception("ctx = null");
            }
            // 访问数据库获取用户名
            var sql = "SELECT FNAME FROM T_SEC_USER WHERE FUSERID=@FUSERID";
            var paramUserId = new Kingdee.BOS.SqlParam("@FUSERID", Kingdee.BOS.KDDbType.Int32, ctx.UserId);
            var userName = DBUtils.ExecuteScalar(ctx, sql, string.Empty, paramUserId);
            var responseDto = new
            {
                UserName = userName,
                ApiName = System.Reflection.MethodInfo.GetCurrentMethod().Name,
                Args = new object[] { arg1, arg2 }
            };
            return responseDto;
        }
    }
}


<2>拷贝WebApi接口组件到应用站点的WebSite\Bin目录下,重启IIS,开发完毕。


<3>添加自定义WebApi接口的单元测试代码,可通过单元测试代码,测试接口的运行情况。

using Kingdee.BOS.WebApi.Client;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System;
namespace Jac.XkDemo.BOS.WebApiTests
{
    /// <summary>
    /// 【WebApi】CustomWebApiDemo
    /// </summary>
    [TestClass]
    public class CustomWebApiDemoWebApiServiceTests
    {
        [TestMethod]
        public void DoSthTest()
        {
            #region Init
            // 星空站点Url
            var webSite = "http://localhost:1700/k3cloud/";
            #endregion
            #region Action
            var client = new K3CloudApiClient(webSite);
            var rval = client.Execute<Kingdee.BOS.JSON.JSONObject>("Jac.XkDemo.BOS.WebApi.CustomWebApiDemoWebApiService.DoSth,Jac.XkDemo.BOS.WebApi", new object[] { "abc", 123 });
            #endregion
            #region Assert
            Assert.IsTrue(rval != null);
            Console.WriteLine(JsonConvert.SerializeObject(rval));
            #endregion
        }
        [TestMethod]
        public void DoSth2Test()
        {
            #region Init
            // 星空站点Url
            var webSite = "http://localhost:1700/k3cloud/";
            // 数据中心ID(账套ID)
            var dbId = "6371de6bdb991c";
            // 登录账号          
            var userName = "demo";
            //第三方系统应用Id             
            var password = "888888";
            // 登录语言
            var lcId = 2052;
            #endregion
            #region Action
            // 登录
            var client = new K3CloudApiCli

二开案例.WebApi.从零开发自定义WebApi接口

【应用场景】开发自定义WebApi接口,实现个性化需求。【案例演示】添加自定义WebApi接口,实现定义接口、调用接口、传入参数、访问数据库、...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信