增加apiclient模块,增加js静态数据方法和类
This commit is contained in:
parent
9e5d7480dc
commit
7c1a14b87f
22
Falcon.SugarApi/ApiClient/ApiClientException.cs
Normal file
22
Falcon.SugarApi/ApiClient/ApiClientException.cs
Normal file
|
@ -0,0 +1,22 @@
|
|||
using System;
|
||||
|
||||
namespace Falcon.SugarApi.ApiClient
|
||||
{
|
||||
/// <summary>
|
||||
/// api客户端异常
|
||||
/// </summary>
|
||||
public class ApiClientException:Exception
|
||||
{
|
||||
/// <summary>
|
||||
/// 通过提供异常消息,请求地址,请求数据,和内部异常构造异常
|
||||
/// </summary>
|
||||
/// <param name="message">异常消息</param>
|
||||
/// <param name="url">请求地址</param>
|
||||
/// <param name="data">请求数据</param>
|
||||
/// <param name="innerException">内部异常</param>
|
||||
public ApiClientException(string? message,string url,string data,Exception? innerException) : base(message,innerException) {
|
||||
this.Data.Add("url",url);
|
||||
this.Data.Add("data",data);
|
||||
}
|
||||
}
|
||||
}
|
27
Falcon.SugarApi/ApiClient/ApiClientOptions.cs
Normal file
27
Falcon.SugarApi/ApiClient/ApiClientOptions.cs
Normal file
|
@ -0,0 +1,27 @@
|
|||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace Falcon.SugarApi.ApiClient
|
||||
{
|
||||
/// <summary>
|
||||
/// api客户端配置
|
||||
/// </summary>
|
||||
public class ApiClientOptions:IOptions<ApiClientOptions>
|
||||
{
|
||||
/// <summary>
|
||||
/// 配置对象
|
||||
/// </summary>
|
||||
public ApiClientOptions Value => this;
|
||||
/// <summary>
|
||||
/// 客户端请求超时。秒
|
||||
/// </summary>
|
||||
public int ClientTimeout { get; set; } = 10;
|
||||
/// <summary>
|
||||
/// 媒体类型
|
||||
/// </summary>
|
||||
public string MediaType { get; set; } = "application/json";
|
||||
/// <summary>
|
||||
/// 保持链接
|
||||
/// </summary>
|
||||
public bool KeepAlive { get; set; }=true;
|
||||
}
|
||||
}
|
68
Falcon.SugarApi/ApiClient/HttpClientHelper.cs
Normal file
68
Falcon.SugarApi/ApiClient/HttpClientHelper.cs
Normal file
|
@ -0,0 +1,68 @@
|
|||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Falcon.SugarApi.ApiClient
|
||||
{
|
||||
/// <summary>
|
||||
/// 通过HttpClient调用api
|
||||
/// </summary>
|
||||
public class HttpClientHelper:IHttpClientHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 实例化帮助对象
|
||||
/// </summary>
|
||||
/// <param name="options">客户端配置</param>
|
||||
public HttpClientHelper(IOptions<ApiClientOptions> options) {
|
||||
Options = options.Value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 记录日期的ILogger
|
||||
/// </summary>
|
||||
public ILogger<HttpClientHelper> Log { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 客户端配置
|
||||
/// </summary>
|
||||
public ApiClientOptions Options { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 向服务器发送POST请求
|
||||
/// </summary>
|
||||
/// <param name="url">api服务器url地址</param>
|
||||
/// <param name="data">要发送的数据</param>
|
||||
/// <returns>响应数据</returns>
|
||||
/// <exception cref="Falcon.SugarApi.ApiClient.ApiClientException">请求api时候发生的异常</exception>
|
||||
public string Post(string url,string data) {
|
||||
var result = "";
|
||||
using(HttpClient client = new HttpClient()) {
|
||||
try {
|
||||
client.Timeout = TimeSpan.FromSeconds(this.Options.ClientTimeout);
|
||||
HttpContent content = new StringContent(data);
|
||||
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(Options.MediaType);
|
||||
if(this.Options.KeepAlive) {
|
||||
client.DefaultRequestHeaders.Connection.Add("keep-alive");
|
||||
}
|
||||
Task<HttpResponseMessage> res = client.PostAsync(url,content);
|
||||
if(res.Result.StatusCode == System.Net.HttpStatusCode.OK) {
|
||||
result = res.Result.Content.ReadAsStringAsync().Result;
|
||||
}
|
||||
else {
|
||||
throw new ApiClientException("访问webapi方法状态码错误",url,data,null);
|
||||
}
|
||||
}
|
||||
catch(Exception ex) {
|
||||
throw new ApiClientException("访问webapi方法异常",url,data,ex);
|
||||
}
|
||||
finally {
|
||||
client.Dispose();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
17
Falcon.SugarApi/ApiClient/IHttpClientHelper.cs
Normal file
17
Falcon.SugarApi/ApiClient/IHttpClientHelper.cs
Normal file
|
@ -0,0 +1,17 @@
|
|||
namespace Falcon.SugarApi.ApiClient
|
||||
{
|
||||
/// <summary>
|
||||
/// 通过HttpClient调用api
|
||||
/// </summary>
|
||||
public interface IHttpClientHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 向服务器发送POST请求
|
||||
/// </summary>
|
||||
/// <param name="url">api服务器url地址</param>
|
||||
/// <param name="data">要发送的数据</param>
|
||||
/// <returns>响应数据</returns>
|
||||
/// <exception cref="Falcon.SugarApi.ApiClient.ApiClientException">请求api时候发生的异常</exception>
|
||||
string Post(string url,string data);
|
||||
}
|
||||
}
|
24
Falcon.SugarApi/ApiClient/IServiceCollentionExtend.cs
Normal file
24
Falcon.SugarApi/ApiClient/IServiceCollentionExtend.cs
Normal file
|
@ -0,0 +1,24 @@
|
|||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace Falcon.SugarApi.ApiClient
|
||||
{
|
||||
/// <summary>
|
||||
/// 服务扩展,注册帮助方法
|
||||
/// </summary>
|
||||
public static class IServiceCollentionExtend
|
||||
{
|
||||
/// <summary>
|
||||
/// 注册IHttpClientHelper实现
|
||||
/// </summary>
|
||||
/// <param name="services">服务集合</param>
|
||||
/// <param name="config">应用配置</param>
|
||||
/// <returns>服务集合</returns>
|
||||
public static IServiceCollection AddHttpClientHelper(this IServiceCollection services,IConfiguration config) {
|
||||
//var sect = config.GetValue<IOptions<ApiClientOptions>>("ApiClient");
|
||||
services.Configure<ApiClientOptions>(config.GetSection("ApiClient"));
|
||||
services.AddSingleton<IHttpClientHelper,HttpClientHelper>();
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
34
JS/StaticData.js
Normal file
34
JS/StaticData.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
//存储静态数据
|
||||
function createSetStaticData() {
|
||||
if (window.sessionStorage) {
|
||||
return (k, v) => window.sessionStorage.setItem(k, v);
|
||||
} else if ($ && $.cookie) {
|
||||
return (k, v) => $.cookie(k, v);
|
||||
} else {
|
||||
throw new Error("没有找到可以支持的存储方法!");
|
||||
}
|
||||
}
|
||||
var setStaticData = createSetStaticData();
|
||||
//读取存储的静态数据
|
||||
function CreateGetStaticData() {
|
||||
if (window.sessionStorage) {
|
||||
return (k) => window.sessionStorage.getItem(k);
|
||||
} else if ($ && $.cookie) {
|
||||
return (k) => $.cookie(k);
|
||||
} else {
|
||||
throw new Error("没有找到可以支持的存储方法!");
|
||||
}
|
||||
}
|
||||
var getStaticData = CreateGetStaticData();
|
||||
//静态数据存取类
|
||||
class StaticData {
|
||||
constructor(k, v) {
|
||||
this.key = k;
|
||||
this.value = v;
|
||||
if (v) {
|
||||
setStaticData(k, v);
|
||||
} else {
|
||||
this.value = getStaticData(k);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user