using Microsoft.AspNetCore.Mvc; using Microservice.Common; using Microservice.Common.Models; namespace MicoService.Demo2.Controllers { [ApiController] [Route("[controller]")] public class UserController : ControllerBase { public UserController( IConfiguration configuration, IServiceClient serviceClient) { _configuration = configuration; _serviceClient = serviceClient; } private readonly IConfiguration _configuration; private readonly IServiceClient _serviceClient; /// /// 演示:读取 Nacos 配置中心配置 /// /// /// [HttpGet("config/{key}")] public IActionResult GetConfig(string key) { var value = _configuration[key]; return Ok(ApiResponseHelper.Success(value, "获取配置成功")); } /// /// 演示:提供给其他服务调用的接口 /// [HttpGet("config/info")] public IActionResult GetConfigInfo() { var data = new ConfigInfoModel("Hello from MicoService.Demo2", "This is a test config info"); return Ok(ApiResponseHelper.Success(data, "获取配置信息成功")); } /// /// 演示:调用其他微服务 /// [HttpGet("call-other")] public async Task CallOtherService() { try { // 使用微服务通讯客户端调用 Mico_Demo1111 服务 var result = await _serviceClient.GetAsync("Mico_Demo1111", "/test/config/info"); var data = new ServiceCallResultModel("调用成功", result); return Ok(ApiResponseHelper.Success(data, "服务调用成功")); } catch (ApiException ex) { return StatusCode(ex.StatusCode, ApiResponseHelper.Error(System.Net.HttpStatusCode.InternalServerError, ex.Message)); } catch (Exception ex) { return StatusCode(500, ApiResponseHelper.Error(System.Net.HttpStatusCode.InternalServerError, "调用失败: " + ex.Message)); } } } }