dotnet core微服务框架Jimu ~部署和调用演示
以开发模式运行
consul agent -dev
- 用 Visual Studio 2022 IDE 打开项目;
- 右击解决方案-选择“属性”
- 在属性界面下,选择多项目启动, News.Server, Auth.Server, Register.Server, ApiGateway 几个项目的操作方式选择为“启动”;
如下图
- 用 Visual Studio 2022 IDE 打开项目;
- 右击 News.Server 项目,选择“发布”(Auth.Server,Register.Server,ApiGateway 同理)
- 选择发布的文件夹;
- 用命令提示符进入文件夹,启动项目
dotnet News.Server.dll
如下图
apigateway & server
service
service detial
调用方不需要知道微服务部署的地址,直接访问网关就可以了。
打开网关的服务列表可以看到所有服务的调用路径,在展开服务的明细可看到更多关于该服务的信息,如授权、角色限制等。
直接复制上面所示的调用地址,下面用 postman 对 api 进行调用:
- 使用 GET 方法请求;
- Content-Type 设置为 application/json;
请求路径: http://localhost:5000/api/v1/register/register?name=grissom&nickname=Gil&pwd=123
上面注册会员都是匿名访问的,但访问受保护的 api 必须先获取 token 请求 token api 需要:
- 使用 Post 方法请求;
- Content-Type 设置为 application/json;
- Body 用 json 格式, 如 {"username":"grissom","password":"123"};
返回结果是一个 json 格式的对象, access_token 就是生成的 token, expired_in (数字时间戳从 1970 到现在的秒数)是 token 的失效时间
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzIzNjUzNzUsInVzZXJuYW1lIjoiZ3Jpc3NvbSIsInJvbGVzIjoiYWRtaW4iLCJtZW1iZXIiOiJ7XCJJZFwiOlwiNTgwMDc4MGYtMjMyMy00ZTdjLWFmMDEtOWEyNzY4NDE0N2MyXCIsXCJOYW1lXCI6XCJncmlzc29tXCIsXCJOaWNrTmFtZVwiOlwiR2lsXCIsXCJSb2xlXCI6XCJhZG1pblwifSJ9.Rr1g94btU8oxJ3ci7dg3OY_QEj2sBhxI-YtyFZQONbQ",
"expired_in": 1532365375
}
- 使用 GET 方法请求;
- Content-Type 设置为 application/json;
- Authorization 设置为上面生成的 token, 格式: Bearer {token} 如
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzIzNjUzNzUsInVzZXJuYW1lIjoiZ3Jpc3NvbSIsInJvbGVzIjoiYWRtaW4iLCJtZW1iZXIiOiJ7XCJJZFwiOlwiNTgwMDc4MGYtMjMyMy00ZTdjLWFmMDEtOWEyNzY4NDE0N2MyXCIsXCJOYW1lXCI6XCJncmlzc29tXCIsXCJOaWNrTmFtZVwiOlwiR2lsXCIsXCJSb2xlXCI6XCJhZG1pblwifSJ9.Rr1g94btU8oxJ3ci7dg3OY_QEj2sBhxI-YtyFZQONbQ
会员服务: 获取所有新闻、获取指定新闻、发布新闻 都是受保护的 api (EnableAuthorization:true),所以调用时都需要带上 token
- 使用 GET 方法请求;
- Content-Type 设置为 application/json;
- Authorization 设置为上面生成的 token, 格式: Bearer {token}
- 调用路径: api/v1/news/getallnews
发布新闻的接口接受的是一个对象,所以需要用 POST
- 使用 POST 方法请求;
- Content-Type 设置为 application/json;
- Authorization 设置为上面生成的 token, 格式: Bearer {token}
- 调用路径: api/v1/news/postnews
根据返回的 id 获取该篇新闻
我们看看发布新闻方法的声明
指定了 Roles="admin"
, 即需要具有 admin 角色的用户才能访问, 而上面调用发布新闻的用户是 grissom , 在模拟数据里配置了他属于 admin 角色
而用户 Foo 的角色是 guest, 我们换成他去获取 token, 然后再调用发布新闻的 api, 会报错: 未授权
分类:
.Net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?