mirror of
https://github.com/anjoy8/Blog.Core.git
synced 2024-09-20 23:48:27 +08:00
feat: some change
This commit is contained in:
parent
325baf8e9e
commit
62cdfb3a56
|
@ -758,7 +758,7 @@
|
|||
Values控制器
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.#ctor(Blog.Core.IServices.IBlogArticleServices,AutoMapper.IMapper,Blog.Core.IServices.IAdvertisementServices,Blog.Core.Model.Love,Blog.Core.IServices.IRoleModulePermissionServices,Blog.Core.Common.HttpContextUser.IUser,Blog.Core.IServices.IPasswordLibServices,Blog.Core.Common.WebApiClients.HttpApis.IBlogApi,Blog.Core.Common.WebApiClients.HttpApis.IDoubanApi,Blog.Core.Common.Https.HttpPolly.IHttpPollyHelper,Microsoft.Extensions.Options.IOptions{Blog.Core.Common.Option.SeqOptions})">
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.#ctor(Blog.Core.IServices.IBlogArticleServices,AutoMapper.IMapper,Blog.Core.IServices.IAdvertisementServices,Blog.Core.Model.Love,Blog.Core.IServices.IRoleModulePermissionServices,Blog.Core.Common.HttpContextUser.IUser,Blog.Core.IServices.IPasswordLibServices,Blog.Core.Common.Https.HttpPolly.IHttpPollyHelper,Microsoft.Extensions.Options.IOptions{Blog.Core.Common.Option.SeqOptions})">
|
||||
<summary>
|
||||
ValuesController
|
||||
</summary>
|
||||
|
@ -769,9 +769,8 @@
|
|||
<param name="roleModulePermissionServices"></param>
|
||||
<param name="user"></param>
|
||||
<param name="passwordLibServices"></param>
|
||||
<param name="blogApi"></param>
|
||||
<param name="doubanApi"></param>
|
||||
<param name="httpPollyHelper"></param>
|
||||
<param name="seqOptions"></param>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.TestSqlsugarWithCache">
|
||||
<summary>
|
||||
|
@ -854,12 +853,6 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.WebApiClientGetAsync">
|
||||
<summary>
|
||||
测试http请求 WebApiClient Get
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.ValuesController.FluentVaTest(Blog.Core.Filter.UserRegisterVo)">
|
||||
<summary>
|
||||
测试Fulent做参数校验
|
||||
|
|
|
@ -3,7 +3,6 @@ using Blog.Core.Common;
|
|||
using Blog.Core.Common.HttpContextUser;
|
||||
using Blog.Core.Common.Https.HttpPolly;
|
||||
using Blog.Core.Common.Option;
|
||||
using Blog.Core.Common.WebApiClients.HttpApis;
|
||||
using Blog.Core.EventBus;
|
||||
using Blog.Core.EventBus.EventHandling;
|
||||
using Blog.Core.Extensions;
|
||||
|
@ -38,8 +37,6 @@ namespace Blog.Core.Controllers
|
|||
private readonly IRoleModulePermissionServices _roleModulePermissionServices;
|
||||
private readonly IUser _user;
|
||||
private readonly IPasswordLibServices _passwordLibServices;
|
||||
private readonly IBlogApi _blogApi;
|
||||
private readonly IDoubanApi _doubanApi;
|
||||
readonly IBlogArticleServices _blogArticleServices;
|
||||
private readonly IHttpPollyHelper _httpPollyHelper;
|
||||
private readonly SeqOptions _seqOptions;
|
||||
|
@ -54,17 +51,14 @@ namespace Blog.Core.Controllers
|
|||
/// <param name="roleModulePermissionServices"></param>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="passwordLibServices"></param>
|
||||
/// <param name="blogApi"></param>
|
||||
/// <param name="doubanApi"></param>
|
||||
/// <param name="httpPollyHelper"></param>
|
||||
/// <param name="seqOptions"></param>
|
||||
public ValuesController(IBlogArticleServices blogArticleServices
|
||||
, IMapper mapper
|
||||
, IAdvertisementServices advertisementServices
|
||||
, Love love
|
||||
, IRoleModulePermissionServices roleModulePermissionServices
|
||||
, IUser user, IPasswordLibServices passwordLibServices
|
||||
, IBlogApi blogApi
|
||||
, IDoubanApi doubanApi
|
||||
, IHttpPollyHelper httpPollyHelper
|
||||
, IOptions<SeqOptions> seqOptions)
|
||||
{
|
||||
|
@ -77,9 +71,6 @@ namespace Blog.Core.Controllers
|
|||
_user = user;
|
||||
// 测试多库
|
||||
_passwordLibServices = passwordLibServices;
|
||||
// 测试http请求
|
||||
_blogApi = blogApi;
|
||||
_doubanApi = doubanApi;
|
||||
// 测试AOP加载顺序,配合 return
|
||||
_blogArticleServices = blogArticleServices;
|
||||
// 测试redis消息队列
|
||||
|
@ -162,11 +153,6 @@ namespace Blog.Core.Controllers
|
|||
{ bsubmitter = $"laozhang{DateTime.Now.Millisecond}", IsDeleted = false, bID = 5 });
|
||||
|
||||
|
||||
// 测试模拟异常,全局异常过滤器拦截
|
||||
var i = 0;
|
||||
// var d = 3 / i;
|
||||
|
||||
|
||||
// 测试 AOP 缓存
|
||||
var blogArticles = await _blogArticleServices.GetBlogs();
|
||||
|
||||
|
@ -240,7 +226,6 @@ namespace Blog.Core.Controllers
|
|||
// GET api/values/5
|
||||
[HttpGet("{id}")]
|
||||
[AllowAnonymous]
|
||||
//[TypeFilter(typeof(DeleteSubscriptionCache),Arguments =new object[] { "1"})]
|
||||
[TypeFilter(typeof(UseServiceDIAttribute), Arguments = new object[] { "laozhang" })]
|
||||
public ActionResult<string> Get(int id)
|
||||
{
|
||||
|
@ -351,20 +336,6 @@ namespace Blog.Core.Controllers
|
|||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 测试http请求 WebApiClient Get
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("WebApiClientGetAsync")]
|
||||
[AllowAnonymous]
|
||||
public async Task<object> WebApiClientGetAsync()
|
||||
{
|
||||
int id = 1;
|
||||
string isbn = "9787544270878";
|
||||
var doubanVideoDetail = await _doubanApi.VideoDetailAsync(isbn);
|
||||
return await _blogApi.DetailNuxtNoPerAsync(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 测试Fulent做参数校验
|
||||
/// </summary>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
using Blog.Core.IServices;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Blog.Core.Filter
|
||||
{
|
||||
|
@ -11,7 +10,7 @@ namespace Blog.Core.Filter
|
|||
private readonly IBlogArticleServices _blogArticleServices;
|
||||
private readonly string _name;
|
||||
|
||||
public UseServiceDIAttribute(ILogger<UseServiceDIAttribute> logger, IBlogArticleServices blogArticleServices,string Name="")
|
||||
public UseServiceDIAttribute(ILogger<UseServiceDIAttribute> logger, IBlogArticleServices blogArticleServices, string Name = "")
|
||||
{
|
||||
_logger = logger;
|
||||
_blogArticleServices = blogArticleServices;
|
||||
|
@ -21,14 +20,16 @@ namespace Blog.Core.Filter
|
|||
|
||||
public override void OnActionExecuted(ActionExecutedContext context)
|
||||
{
|
||||
//var dd =await _blogArticleServices.Query();
|
||||
var dd = _blogArticleServices.Query().Result;
|
||||
_logger.LogInformation("测试自定义服务特性");
|
||||
Console.WriteLine(_name);
|
||||
base.OnActionExecuted(context);
|
||||
DeleteSubscriptionFiles();
|
||||
}
|
||||
|
||||
private void DeleteSubscriptionFiles()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,6 +62,7 @@ JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
|
|||
builder.Services.AddCacheSetup();
|
||||
builder.Services.AddSqlsugarSetup();
|
||||
builder.Services.AddDbSetup();
|
||||
builder.Services.AddInitializationHostServiceSetup();
|
||||
|
||||
builder.Host.AddSerilogSetup();
|
||||
|
||||
|
@ -73,10 +74,12 @@ builder.Services.AddJobSetup();
|
|||
|
||||
builder.Services.AddHttpContextSetup();
|
||||
builder.Services.AddAppTableConfigSetup(builder.Environment);
|
||||
builder.Services.AddHttpApi();
|
||||
builder.Services.AddRedisInitMqSetup();
|
||||
builder.Services.AddHttpPollySetup();
|
||||
builder.Services.AddNacosSetup(builder.Configuration);
|
||||
builder.Services.AddInitializationHostServiceSetup();
|
||||
builder.Services.AddRedisInitMqSetup();
|
||||
|
||||
builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);
|
||||
builder.Services.AddSignalR().AddNewtonsoftJsonProtocol();
|
||||
|
||||
builder.Services.AddAuthorizationSetup();
|
||||
if (Permissions.IsUseIds4 || Permissions.IsUseAuthing)
|
||||
|
@ -89,14 +92,11 @@ else
|
|||
builder.Services.AddAuthentication_JWTSetup();
|
||||
}
|
||||
|
||||
builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);
|
||||
builder.Services.AddSignalR().AddNewtonsoftJsonProtocol();
|
||||
builder.Services.AddScoped<UseServiceDIAttribute>();
|
||||
builder.Services.Configure<KestrelServerOptions>(x => x.AllowSynchronousIO = true)
|
||||
.Configure<IISServerOptions>(x => x.AllowSynchronousIO = true);
|
||||
|
||||
builder.Services.AddSession();
|
||||
builder.Services.AddHttpPollySetup();
|
||||
builder.Services.AddControllers(o =>
|
||||
{
|
||||
o.Filters.Add(typeof(GlobalExceptionsFilter));
|
||||
|
|
|
@ -37,8 +37,6 @@
|
|||
|
||||
<PackageReference Include="Serilog" Version="3.1.1" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.0" />
|
||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" />
|
||||
<PackageReference Include="WebApiClient.JIT" Version="1.1.4" />
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.Common.LogHelper;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Blog.Core.Common.DB;
|
||||
|
||||
|
@ -16,194 +12,6 @@ namespace Blog.Core.Extensions
|
|||
/// </summary>
|
||||
public static class AppConfigSetup
|
||||
{
|
||||
public static void AddAppConfigSetup(this IServiceCollection services, IHostEnvironment env)
|
||||
{
|
||||
if (services == null) throw new ArgumentNullException(nameof(services));
|
||||
|
||||
if (AppSettings.app(new string[] { "Startup", "AppConfigAlert", "Enabled" }).ObjToBool())
|
||||
{
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||
Console.OutputEncoding = Encoding.GetEncoding("GB2312");
|
||||
}
|
||||
|
||||
Console.WriteLine("************ Blog.Core Config Set *****************");
|
||||
|
||||
ConsoleHelper.WriteSuccessLine("Current environment: " + Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
|
||||
|
||||
// 授权策略方案
|
||||
if (Permissions.IsUseIds4)
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Current authorization scheme: " + (Permissions.IsUseIds4 ? "Ids4" : "JWT"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Current authorization scheme: " + (Permissions.IsUseIds4 ? "Ids4" : "JWT"));
|
||||
}
|
||||
// 缓存AOP
|
||||
if (!AppSettings.app(new string[] { "AppSettings", "CachingAOP", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"Caching AOP: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Caching AOP: True");
|
||||
}
|
||||
|
||||
// 服务日志AOP
|
||||
if (!AppSettings.app(new string[] { "AppSettings", "LogAOP", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"Service Log AOP: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Service Log AOP: True");
|
||||
}
|
||||
|
||||
// 开启的中间件日志
|
||||
var requestResponseLogOpen = AppSettings.app(new string[] { "Middleware", "RequestResponseLog", "Enabled" }).ObjToBool();
|
||||
var ipLogOpen = AppSettings.app(new string[] { "Middleware", "IPLog", "Enabled" }).ObjToBool();
|
||||
var recordAccessLogsOpen = AppSettings.app(new string[] { "Middleware", "RecordAccessLogs", "Enabled" }).ObjToBool();
|
||||
ConsoleHelper.WriteSuccessLine($"OPEN Log: " +
|
||||
(requestResponseLogOpen ? "RequestResponseLog √," : "") +
|
||||
(ipLogOpen ? "IPLog √," : "") +
|
||||
(recordAccessLogsOpen ? "RecordAccessLogs √," : "")
|
||||
);
|
||||
|
||||
// 事务AOP
|
||||
if (!AppSettings.app(new string[] { "AppSettings", "TranAOP", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"Transaction AOP: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Transaction AOP: True");
|
||||
}
|
||||
// 审计AOP
|
||||
if (!AppSettings.app(new string[] { "AppSettings", "UserAuditAOP", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"UserAudit AOP: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"UserAudit AOP: True");
|
||||
}
|
||||
|
||||
// 数据库Sql执行AOP
|
||||
if (!AppSettings.app(new string[] { "AppSettings", "SqlAOP", "OutToLogFile", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"DB Sql AOP To LogFile: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"DB Sql AOP To LogFile: True");
|
||||
}
|
||||
|
||||
// Sql执行日志输出到控制台
|
||||
if (!AppSettings.app(new string[] { "AppSettings", "SqlAOP", "OutToConsole", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"DB Sql AOP To Console: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"DB Sql AOP To Console: True");
|
||||
}
|
||||
|
||||
// SingnalR发送数据
|
||||
if (!AppSettings.app(new string[] { "Middleware", "SignalR", "Enabled" }).ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"SignalR send data: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"SignalR send data: True");
|
||||
}
|
||||
|
||||
// IP限流
|
||||
if (!AppSettings.app("Middleware", "IpRateLimit", "Enabled").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"IpRateLimiting: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"IpRateLimiting: True");
|
||||
}
|
||||
|
||||
// 性能分析
|
||||
if (!AppSettings.app("Startup", "MiniProfiler", "Enabled").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"MiniProfiler: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"MiniProfiler: True");
|
||||
}
|
||||
|
||||
// CORS跨域
|
||||
if (!AppSettings.app("Startup", "Cors", "EnableAllIPs").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"EnableAllIPs For CORS: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"EnableAllIPs For CORS: True");
|
||||
}
|
||||
|
||||
// redis消息队列
|
||||
if (!AppSettings.app("Startup", "RedisMq", "Enabled").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"Redis MQ: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Redis MQ: True");
|
||||
}
|
||||
|
||||
// RabbitMQ 消息队列
|
||||
if (!AppSettings.app("RabbitMQ", "Enabled").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"RabbitMQ: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"RabbitMQ: True");
|
||||
}
|
||||
|
||||
// Consul 注册服务
|
||||
if (!AppSettings.app("Middleware", "Consul", "Enabled").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"Consul service: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Consul service: True");
|
||||
}
|
||||
|
||||
// EventBus 事件总线
|
||||
if (!AppSettings.app("EventBus", "Enabled").ObjToBool())
|
||||
{
|
||||
Console.WriteLine($"EventBus: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"EventBus: True");
|
||||
}
|
||||
|
||||
// 读写分离
|
||||
if (!BaseDBConfig.MainConfig.SlaveConnectionConfigs.AnyNoException())
|
||||
{
|
||||
Console.WriteLine($"Is CQRS: False");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsoleHelper.WriteSuccessLine($"Is CQRS: True");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddAppTableConfigSetup(this IServiceCollection services, IHostEnvironment env)
|
||||
{
|
||||
if (services == null) throw new ArgumentNullException(nameof(services));
|
||||
|
|
|
@ -4,8 +4,6 @@ using Microsoft.Extensions.DependencyInjection;
|
|||
using Polly;
|
||||
using Polly.Extensions.Http;
|
||||
using Polly.Timeout;
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace Blog.Core.Extensions
|
||||
{
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
|
||||
namespace Blog.Core.Extensions
|
||||
{
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
using WebApiClient.Extensions.DependencyInjection;
|
||||
using Blog.Core.Common.WebApiClients.HttpApis;
|
||||
|
||||
namespace Blog.Core.Extensions
|
||||
{
|
||||
/// <summary>
|
||||
/// WebApiClientSetup 启动服务
|
||||
/// </summary>
|
||||
public static class WebApiClientSetup
|
||||
{
|
||||
/// <summary>
|
||||
/// 注册WebApiClient接口
|
||||
/// </summary>
|
||||
/// <param name="services"></param>
|
||||
public static void AddHttpApi(this IServiceCollection services)
|
||||
{
|
||||
if (services == null) throw new ArgumentNullException(nameof(services));
|
||||
|
||||
services.AddHttpApi<IBlogApi>().ConfigureHttpApiConfig(c =>
|
||||
{
|
||||
c.HttpHost = new Uri("http://apk.neters.club/");
|
||||
c.FormatOptions.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
});
|
||||
services.AddHttpApi<IDoubanApi>().ConfigureHttpApiConfig(c =>
|
||||
{
|
||||
c.HttpHost = new Uri("http://api.xiaomafeixiang.com/");
|
||||
c.FormatOptions.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
namespace Blog.Core.Common.WebApiClients.HttpApis
|
||||
{
|
||||
public class Data
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string isbn { get; set; }
|
||||
/// <summary>
|
||||
/// 解忧杂货店
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
/// <summary>
|
||||
/// ナミヤ雑貨店の奇蹟
|
||||
/// </summary>
|
||||
public string origintitle { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string subtitle { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string image { get; set; }
|
||||
/// <summary>
|
||||
/// [日]东野圭吾
|
||||
/// </summary>
|
||||
public string author { get; set; }
|
||||
/// <summary>
|
||||
/// 李盈春
|
||||
/// </summary>
|
||||
public string translator { get; set; }
|
||||
/// <summary>
|
||||
/// 南海出版公司
|
||||
/// </summary>
|
||||
public string publisher { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string pubdate { get; set; }
|
||||
/// <summary>
|
||||
/// <东野圭吾><治愈><温暖><小说><日本><日本文学><東野圭吾><推理>
|
||||
/// </summary>
|
||||
public string tags { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string kaiben { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string zhizhang { get; set; }
|
||||
/// <summary>
|
||||
/// 精装
|
||||
/// </summary>
|
||||
public string binding { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string taozhuang { get; set; }
|
||||
/// <summary>
|
||||
/// 新经典文库·东野圭吾作品
|
||||
/// </summary>
|
||||
public string series { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string pages { get; set; }
|
||||
/// <summary>
|
||||
/// 39.50元
|
||||
/// </summary>
|
||||
public string price { get; set; }
|
||||
|
||||
public string author_intro { get; set; }
|
||||
|
||||
public string summary { get; set; }
|
||||
|
||||
public string catalog { get; set; }
|
||||
}
|
||||
|
||||
public class DoubanViewModel
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string status { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public Data data { get; set; }
|
||||
/// <summary>
|
||||
/// 获取图书数据成功
|
||||
/// </summary>
|
||||
public string msg { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
using WebApiClient;
|
||||
using WebApiClient.Attributes;
|
||||
|
||||
namespace Blog.Core.Common.WebApiClients.HttpApis
|
||||
{
|
||||
/// <summary>
|
||||
/// 豆瓣视频管理
|
||||
/// </summary>
|
||||
[TraceFilter]
|
||||
public interface IDoubanApi : IHttpApi
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取电影详情
|
||||
/// </summary>
|
||||
/// <param name="isbn"></param>
|
||||
[HttpGet("api/bookinfo")]
|
||||
ITask<DoubanViewModel> VideoDetailAsync(string isbn);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
using Blog.Core.Model.ViewModels;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Threading.Tasks;
|
||||
using WebApiClient;
|
||||
using WebApiClient.Attributes;
|
||||
|
||||
namespace Blog.Core.Common.WebApiClients.HttpApis
|
||||
{
|
||||
/// <summary>
|
||||
/// 博客管理
|
||||
/// </summary>
|
||||
[TraceFilter]
|
||||
public interface IBlogApi : IHttpApi
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取博客列表【无权限】
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="page"></param>
|
||||
/// <param name="bcategory"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns>Success</returns>
|
||||
[HttpGet("api/Blog")]
|
||||
Task<MessageModel<PageModel<BlogArticle>>> BlogAsync(int? id, int page, string bcategory, string key);
|
||||
|
||||
/// <summary>
|
||||
/// 添加博客【无权限】
|
||||
/// </summary>
|
||||
/// <param name="body"></param>
|
||||
/// <returns>Success</returns>
|
||||
[HttpPost("api/Blog")]
|
||||
Task<MessageModel<string>> Blog2Async([JsonContent] BlogArticle body);
|
||||
|
||||
/// <summary>
|
||||
/// 获取博客详情 (Auth)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns>Success</returns>
|
||||
[HttpGet("api/Blog/{id}")]
|
||||
Task<MessageModel<BlogViewModels>> Blog3Async([Required] int id);
|
||||
|
||||
/// <summary>
|
||||
/// apache jemeter 压力测试
|
||||
/// 更新接口
|
||||
/// </summary>
|
||||
/// <returns>Success</returns>
|
||||
[HttpGet("api/Blog/ApacheTestUpdate")]
|
||||
Task<MessageModel<bool>> ApacheTestUpdateAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 删除博客 (Auth policies: Permission)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns>Success</returns>
|
||||
[HttpDelete("api/Blog/Delete")]
|
||||
Task<MessageModel<string>> DeleteAsync(int? id);
|
||||
|
||||
/// <summary>
|
||||
/// 获取详情【无权限】
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns>Success</returns>
|
||||
[HttpGet("api/Blog/DetailNuxtNoPer")]
|
||||
Task<MessageModel<BlogViewModels>> DetailNuxtNoPerAsync(int? id);
|
||||
|
||||
/// <summary>
|
||||
/// 更新博客信息 (Auth)
|
||||
/// </summary>
|
||||
/// <param name="body"></param>
|
||||
/// <returns>Success</returns>
|
||||
[HttpPut("api/Blog/Update")]
|
||||
Task<MessageModel<string>> UpdateAsync([JsonContent] BlogArticle body);
|
||||
|
||||
/// <summary>
|
||||
/// 获取博客测试信息 v2版本
|
||||
/// </summary>
|
||||
/// <returns>Success</returns>
|
||||
[HttpGet("api/V2/Blog/Blogtest")]
|
||||
Task<MessageModel<string>> BlogtestAsync();
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user