二开案例.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格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



