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));
}
}
}
}