一、创建.NetCore WebApi项目
1、创建一个MsgService信息服务项目
1.1 在Controllers文件夹下新建两个WebApi控制器,分别为EmailController、SMSController
namespace MsgService.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class EmailController : ControllerBase
{
[HttpPost(nameof(Send_QQ))]
public void Send_QQ(SendEmailRequest model)
{
Console.WriteLine($"通过QQ邮件接口向{model.Email}发送邮件,标题{model.Title},内容:{ model.Body}");
}
[HttpPost(nameof(Send_163))]
public void Send_163(SendEmailRequest model)
{
Console.WriteLine($"通过网易邮件接口向{model.Email}发送邮件,标题{model.Title}, 内容:{ model.Body}");
}
[HttpPost(nameof(Send_Sohu))]
public void Send_Sohu(SendEmailRequest model)
{
Console.WriteLine($"通过Sohu邮件接口向{model.Email}发送邮件,标题{model.Title},内容:{ model.Body}");
}
}
public class SendEmailRequest
{
public string Email { get; set; }
public string Title { get; set; }
public string Body { get; set; }
}
}
public class SMSController : ControllerBase
{
//发请求,报文体为{phoneNum:"110",msg:"aaaaaaaaaaaaa"},
[HttpPost(nameof(Send_MI))]
public void Send_MI(dynamic model)
{
Console.WriteLine($"通过小米短信接口向{model.phoneNum}发送短信{model.msg}");
}
[HttpPost(nameof(Send_LX))]
public void Send_LX(SendSMSRequest model)
{
Console.WriteLine($"通过联想短信接口向{model.PhoneNum}发送短信{model.Msg}");
}
[HttpPost(nameof(Send_HW))]
public void Send_HW(SendSMSRequest model)
{
Console.WriteLine($"通过华为短信接口向{model.PhoneNum}发送短信{model.Msg}");
}
}
public class SendSMSRequest
{
public string PhoneNum { get; set; }
public string Msg { get; set; }
}
2、创建一个ProductService产品信息服务项目
2.1 在Controllers文件夹下新建一个ProductController控制器
public class ProductController : ControllerBase
{
//这显然是为了demo,这样放到内存中不能“集群”
private static List<Product> products = new List<Product>();
static ProductController()
{
products.Add(new Product
{
Id = 1,
Name = "T430笔记本",
Price = 8888,
Description = "CPU i7标压版,1T硬盘"
});
products.Add(new Product
{
Id = 2,
Name = "华为Mate10",
Price = 3888,
Description = "大猩猩屏幕,多点触摸"
});
products.Add(new Product
{
Id = 3,
Name = "天梭手表",
Price = 9888,
Description = "瑞士经典款,可好了"
});
}
[HttpGet]
public IEnumerable<Product> Get()
{
return products;
}
[HttpGet("{id}")]
public Product Get(int id)
{
var product = products.SingleOrDefault(p => p.Id == id);
if (product == null)
{
Response.StatusCode = 404;
}
return product;
}
[HttpPost]
public void Add(Product model)
{
if (products.Any(p => p.Id == model.Id))
{
Response.StatusCode = (int)HttpStatusCode.Conflict;//通过状态码而非响应体报错,是restful风格
return;
}
products.Add(model);
}
[HttpDelete("{id}")]
public void Delete(int id)
{
var product = products.SingleOrDefault(p => p.Id == id);
if (product != null)
{
products.Remove(product);
}
}
}
2.2 在Controllers文件夹下新建一个Product类
public class Product
{
public long Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public string Description { get; set; }
}
二、consul 服务器安装
2.1 cmd命令执行 consul.exe agent -dev (consul 的监控页面 http://127.0.0.1:8500/)
三、.Net Core连接consul
3.1 MsgService项目与ProductService项目皆