- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
提供新闻浏览和发布服务 。
有 3 个需要授权公开的 api
Install-Package Jimu
using System; using System.Collections.Generic; using System.Text; namespace News.IServices { public class News { public string Id { get; set; } public string Title { get; set; } public string Director { get; set; } public string PostTime { get; set; } public string Content { get; set; } } }
微服务的定义规则:
Jimu 支持异步方法, 如下面的 Register 。
下面 3 个方法,都设置 EnableAuthorization = true, 需要授权才能访问(即请求要带上 token),其中 PostNews 指定 Roles = "admin", 具有 admin 角色的会员才能调用该方法 。
using System; using System.Collections.Generic; using System.Threading.Tasks; using Jimu; namespace News.IServices { [JimuServiceRoute("/api/v1/news")] public interface INewsService : IJimuService { [JimuService(EnableAuthorization = true, CreatedBy = "grissom", CreatedDate = "2018-07-17", Comment = "get all news")] Task<List<News>> GetAllNews(); [JimuService(EnableAuthorization = true, Roles = "admin", CreatedBy = "grissom", CreatedDate = "2018-07-17", Comment = "post news")] Task<string> PostNews(News news); [JimuService(EnableAuthorization = true, CreatedBy = "grissom", CreatedDate = "2018-07-17", Comment = "get specify news")] News GetNews(string id); } }
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Jimu; namespace News.IServices { public class NewsService : INewsService { readonly ILogger _logger; readonly JimuPayload _jimuPayload; static List<News> _newsDb = new List<News>(); static NewsService() { // mock some news _newsDb.Add(new News { Id = Guid.NewGuid().ToString(), Director = "grissom", PostTime = DateTime.Now.ToString(), Title = "世界杯:法国夺冠啦!", Content = "头条:法国勇夺2018年世界杯冠军, 后面省略 1 万字" }); _newsDb.Add(new News { Id = Guid.NewGuid().ToString(), Director = "grissom", PostTime = DateTime.Now.ToString(), Title = "Jimu 发布新版本", Content = "新闻社:Jimu(积木) 发布新版本,特点有,后面省略 1 万字" }); } public NewsService(ILogger logger, JimuPayload jimuPayload) { _logger = logger; _jimuPayload = jimuPayload; } public Task<List<News>> GetAllNews() { _logger.Debug($"member: {_jimuPayload.Items["username"]} getallnews"); return Task.FromResult(_newsDb); } public Task<string> PostNews(News news) { _logger.Debug($"member: {_jimuPayload.Items["username"]} post an news which title is: {news.Title}"); news.PostTime = DateTime.Now.ToString(); news.Id = new Guid().ToString(); news.Director = _jimuPayload.Items["username"].ToString(); _newsDb.Add(news); return Task.FromResult(news.Id); } public News GetNews(string id) { _logger.Debug($"member: {_jimuPayload.Items["username"]} getnews by id: {id}"); var news = _newsDb.FirstOrDefault(x => x.Id == id); return news; } } }
Install-Package Jimu.Server
Install-Package Jimu.Common.Discovery.ConsulIntegration
using System; using Autofac; using Jimu.Server; namespace News.Server { class Program { static void Main(string[] args) { var builder = new ServiceHostServerBuilder(new ContainerBuilder()) .UseLog4netLogger() .LoadServices("News.IServices", "News.Services") .UseDotNettyForTransfer("127.0.0.1", 8002) .UseConsulForDiscovery("127.0.0.1", 8500, "JimuService", $"127.0.0.1:8002") .UseJoseJwtForOAuth<Jimu.DotNettyAddress>(new Jimu.Server.OAuth.JwtAuthorizationOptions { SecretKey = "123456", }); using (var host = builder.Build()) { host.Run(); while (true) { Console.ReadKey(); } } } } }
。
最后此篇关于dotnetcore微服务框架Jimu~浏览和发布新闻微服务的文章就讲到这里了,如果你想了解更多关于dotnetcore微服务框架Jimu~浏览和发布新闻微服务的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想在我的 dotnet 核心项目中使用 TransactionScope 来提供业务服务。我同时使用 MysqlConnection 和 SqlConnection。我的目的是添加一些数据我自己的数
我有一个正则表达式,当它试图匹配一个长的、完整的字符串时挂起。这是一个示例控制台应用程序: using System; using System.Diagnostics; using System.T
我已经开始将 dotnetcore 用于一个业余项目。 我在尝试安装 NLog 时遇到问题。 Visual Studio Code 编辑器似乎可以识别 beta 版本,因为 intelisense 在
我有一个自定义路由,它从非 SQL 数据库 (MongoDB) 读取 URL,并在应用程序启动时将它们添加到路由管道,这是“非常标准的” 像这样的东西(在我的 startup.cs 文件中): app
下面的代码是演示问题的原始代码的精简版本。在 dotnetcore (1.0.1) 中,.IsEnum 属性被移动到 System.Reflection。我进行了所有按预期工作的更改。但是,我无法使用
为了保持存储库干净并与输出和构建文件分开,我们更改了项目文件中的相应路径。 对于指定 的 Net Framework 项目中间输出路径 将 obj 目录重定向到相应的文件夹。 对于 Net Core
我正在寻找使用 .NET 核心捕获屏幕截图。我知道使用 .NET 框架这是微不足道的,但使用 .NET 核心可以做到这一点吗?我已经搜索过,但在任何地方都找不到任何答案。 最佳答案 System.Dr
是否可以使用特定于健康检查请求的默认 dotnetcore 日志来过滤日志? 因此,这将忽略对/health 等路径的请求 我可以看到按类别和类型可用的过滤,但这还不够,因为它也会阻止记录其他请求。
我正在尝试使用无服务器模板发布 .net core 3 Web api 项目。为了发布 Lambda,我使用 Code Pipeline 在无服务器模板上调用“AWS CloudFormation P
我有一台 C:\驱动器空间不足的机器,我想将我的 DNX/DOTNET 包的安装位置更改为我的 D:\驱动器下的位置。 包缓存位置是否可配置? 注意:我无法灵活地将我的配置文件位置更改为不同的驱动器。
我在 startup.cs 中配置了一个授权策略 services.AddAuthorization(auth => { auth.AddPolicy("Bea
在启动时注册为 Singleton、Scoped 或 Transient,Singleton 意味着只会创建一个实例。 假设我们有一个 UserInfo services.AddSingleton()
在 Ruby on Rails 中,您可以在命令行中使用类似以下内容生成 Controller : rails 生成 Controller ControllerName action1 action2
我们使用 WebAPI 在 Dotnetcore 中编写了一个应用程序。现在,我们想为客户迁移到 NodeJS,因为他们的 IT 团队支持 NodeJS。 我想知道是否有人有任何理由/优势离开 Dot
我将以下单元测试从 .Net Framework 库移植到 .Net 核心 xunint 测试库。需要添加单元测试的项目是 https://github.com/dotliquid/dotliquid
所以我的问题很简单。我有一些文件要复制到构建输出目录,无论是调试构建还是发布发布。我能找到的所有信息都是关于旧的 json 配置方法的。有人有将 csproj 与 dotnetcore 结合使用的示例
我喜欢在我的应用程序中使用静态帮助器类来处理常见的管道问题,例如检查角色或 Razor Html 帮助器和其他东西……但是在 DI 世界中如何做到这一点? 比如说我想要一个扩展助手来检查用户是否是管理
我一直在寻找一种在 Dotnet Core 1.1 中使用 Entity Framework 进行通用分页的方法。 我在 MSDN 上找到了这个指南:https://docs.microsoft.co
我正在创建一个简单的 dotnetcore 2.0 应用程序,我想将其容器化。这个想法是这个容器将在部署时运行一次以执行一些应用程序配置任务。 目前,代码只是执行此操作... class Progra
在命令行我可以输入 dotnet new -t web 构建一个新的 asp.net core web 项目,但它包含“完整模板”(相当于在 Visual Studio 中创建一个新的 MVC 项目)
我是一名优秀的程序员,十分优秀!