DDD的单Controller实战-解决技术栈兼容问题

文章目录

    • 实现原理
    • 代码实战
    • 请求截图
    • vue请求案例
    • 更多参考

在系统演进过程中,往往会遇到技术栈不兼容的问题。

比如公司一直用的.net技术栈,而你是Java技术栈或其他,为了做兼容,自主开发了以下中转服务,该服务已上线,目前稳定。

虽然可以使用Nginx的路由负载机制,来实现多技术栈的兼容,但考虑到要降低对现有业务的影响。所以采取了保守的解决方案。

实现原理

1、在iis上创建一个站点,通过该站点接收http请求
2、A服务根据Content-type和请求方法路由访问不同的B服务接口
3、A服务只做请求和响应数据的透传

代码实战

A服务代码(.net)
主要是将访问B服务的接口路由放到了Header中

public class ApiController : Controller
    {
   
        static string url = "http://localhost:8949";
        [System.Web.Mvc.HttpGet]
        public ActionResult Index()
        {
   
            string route = Request.Headers["proxyRoute"];
            string requestUrl = $"{
     url}/{
     route}?{
     Request.QueryString}";
            Task<string> task = getRequest(requestUrl);
            return result(task.Result);
        }


        [System.Web.Mvc.HttpPost]
        public ActionResult Index(string xx)
        {
   
            string requestInfo = null;
            Request.InputStream.Position = 0;
            using (var reader = new StreamReader(Request.InputStream, Encoding.UTF8))
            {
   
                var requestBody = reader.ReadToEnd();
                try
                {
   
                    

你可能感兴趣的:(遇到的开发问题,DDD,java,经验分享,spring,boot,架构,后端)