public async Task <IActionResult> CreateService( [Bind("Name, Type, GroupName, FullDescription")] EsbService newService) { if (ModelState.IsValid) { newService.ActiveStatus = 1; newService.CreatedOn = DateTime.Now; newService.ServiceDescriptor = ""; _esbModelContext.Services.Add(newService); await _esbModelContext.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(newService)); }
public async Task <IActionResult> Create(int serviceId) { EsbService service = await _esbModelContext.Services.FindAsync(serviceId); if (service == null) { return(RedirectToAction(nameof(Create))); } InstanceViewModel viewModel = new InstanceViewModel { ActiveStatus = true, Description = service.FullDescription, InstanceName = service.Name, ServiceID = service.ID, ServiceName = service.Name, ParameterMappings = new List <ParameterMapping>() }; // create default mappings if (service.Type == ServiceType.SimpleRESTful) { var descriptor = JsonConvert.DeserializeObject <SimpleRestfulDescriptorViewModel>(service.ServiceDescriptor); if (descriptor == null) { throw new Exception($"选择的服务{service.Name}尚未定义服务协定"); } if (!string.IsNullOrWhiteSpace(descriptor.RouteDataTemplate)) { string[] parts = descriptor.RouteDataTemplate.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < parts.Length; i++) { string s = parts[i].Trim(); viewModel.ParameterMappings.Add(new ParameterMapping { Source = "route", ServerPath = s, MappingType = MappingType.Path, ClientPath = s }); } } if (!string.IsNullOrWhiteSpace(descriptor.QueryStringTemplate)) { StringHelper.MapQueryFormParametersInto(viewModel.ParameterMappings, "query", descriptor.QueryStringTemplate); } if (!string.IsNullOrWhiteSpace(descriptor.FormBodyTemplate)) { StringHelper.MapQueryFormParametersInto(viewModel.ParameterMappings, "form", descriptor.FormBodyTemplate); } if (descriptor.JsonBodyTemplate != null) { //优先级最高的是JSON模板 descriptor.JsonBodyTemplate.GenerateMappingInto(viewModel.ParameterMappings, "", ""); } } else if (service.Type == ServiceType.NCWebService) { var descriptor = JsonConvert.DeserializeObject <NCDescriptorViewModel>(service.ServiceDescriptor); if (descriptor == null) { throw new Exception($"选择的服务{service.Name}尚未定义服务协定"); } if (descriptor.ParameterBody != null) { descriptor.ParameterBody.GenerateMappingInto(viewModel.ParameterMappings, "", ""); } } else if (service.Type == ServiceType.PrimetonService) { var descriptor = JsonConvert.DeserializeObject <PrimetonDescriptorViewModel>(service.ServiceDescriptor); if (descriptor == null) { throw new Exception($"选择的服务{service.Name}尚未定义服务协定"); } if (descriptor.InputBody != null) { descriptor.InputBody.GenerateMappingInto(viewModel.ParameterMappings, "", ""); } } else { throw new Exception("使用了尚未实现的服务类型"); } TempData.Put(CROSS_VIEWMODEL_KEY, viewModel); return(RedirectToAction(nameof(Edit))); }