1:新建信息服务项目 MsgService 右键新建项目选择下图所示的选项
下一步然后选择ASP.NET Core2.1的Api
2: 在MsgService 项目的控制器中新建Api控制器 EmailController与SMSController 控制器中的代码如下:
EmailController:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
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; }
}
}
SMSController :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace MsgService.Controllers
{
[Route("api/[controller]")]
[ApiController]
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; }
}
}
3:新建产品信息服务项目 ProductService 创建该项目方法与上面的MsgService一样
然后创建控制器ProductController.cs 如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace ProductService.Controllers
{
[Route("api/[controller]")]
[ApiController]
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);