一、创建demo项目
1.新建webapi项目,命名为“DemoProject”,去掉HTTPS勾选
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace DemoProject.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class DefaultController : ControllerBase
{
static List<Student> list = new List<Student>() {
new Student(){ ID = "001", StudentName = "学生1", StudentAge = 16 },
new Student(){ ID = "002", StudentName = "学生2", StudentAge = 18 },
new Student(){ ID = "003", StudentName = "学生3", StudentAge = 17 }
};
[HttpGet]
public List<Student> GetList()
{
return list;
}
[HttpGet]
public Student GetModel(string id)
{
return list.Find(t => t.ID == id);
}
}
public class Student
{
public string ID { get; set; }
public string StudentName { get; set; }
public int StudentAge { get; set; }
}
}
2.通过VS启动,并且保证能正常访问


二、创建Ocelot项目
1.新建webapi项目,命名为“OcelotProject”,去掉HTTPS勾选,不需要Controller
2.打开程序包管理器控制台,执行命令:Install-Package Ocelot

3.在项目根目录下,新建配置文件“ocelot.json”,填写为你自己的“DemoProject”的端口号
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/Default/GetList",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5963
}
],
"UpstreamPathTemplate": "/GetList",
"UpstreamHttpMethod": [ "Get" ]
},
{
"DownstreamPathTemplate": "/api/Default/GetModel?id={s1}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5963
}
],
"UpstreamPathTemplate": "/GetModel?id={s1}",
"UpstreamHttpMethod": [ "Get" ]
}
]
}
4.在Program.cs的CreateHostBuilder中加入
.ConfigureAppConfiguration(conf => {
conf.AddJsonFile("ocelot.json", false, true);
})

5.找到Startup.cs
在ConfigureServices中加入:
services.AddOcelot(Configuration);
在Configure中加入:
app.UseOcelot().Wait();

三、请求
通过VS启动“OcelotProject”,由于配置中对外的路由为“/GetList”,所以访问地址为:http://ip:port/GetList

GetModel的访问地址为:http://ip:port/GetModel?id=002

本文详细介绍了如何使用Ocelot作为微服务网关,实现API路由和转发。首先,通过创建一个包含学生信息的DemoProject,然后构建Ocelot项目进行路由配置,最后演示了如何通过Ocelot访问DemoProject中的数据。
6353





