123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- using Microsoft.AspNetCore.Http;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- namespace Alchemy.Core.Extensions
- {
- public static class HttpContextExtension
- {
- /// <summary>
- /// 获取请求的Referer
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetReferer(this HttpContext context)
- {
- return context.GetHeaderValue("Referer");
- }
- /// <summary>
- /// 判断是否本地请求
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static bool IsLocalRequest(this HttpContext context)
- {
- return context.GetFromIp().Equals("127.0.0.1");
- }
- /// <summary>
- /// 获取接口路由
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetRoute(this HttpContext context)
- {
- return context.Request.Path;
- }
- /// <summary>
- /// 获取请求方法
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetMethod(this HttpContext context)
- {
- return context.Request.Method;
- }
- /// <summary>
- /// 获取请求URL
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetRequestUrl(this HttpContext context)
- {
- return $"{context.Request.Scheme}://{context.Request?.Host}{context.Request?.Path}{context.Request?.QueryString}";
- }
- /// <summary>
- /// 获取Authorization
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetAuthorization(this HttpContext context)
- {
- return context.GetHeaderValue("Authorization");
- }
- /// <summary>
- /// 获取X-User-Token
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetXUserToken(this HttpContext context)
- {
- return context.GetHeaderValue("X-USER-TOKEN");
- }
- /// <summary>
- /// 获取请求头的参数
- /// </summary>
- /// <param name="context"></param>
- /// <param name="strKey"></param>
- /// <returns></returns>
- public static string GetHeaderValue(this HttpContext context, string strKey)
- {
- if (context.Request.Headers.ContainsKey(strKey))
- return context.Request.Headers[strKey].ToString();
- else
- return string.Empty;
- }
- /// <summary>
- /// 获取UA
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetUserAgent(this HttpContext context)
- {
- return context.GetHeaderValue("User-Agent");
- }
- /// <summary>
- /// 获取请求者IP
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetFromIp(this HttpContext context)
- {
- if (context.Connection.RemoteIpAddress.IsNull())
- return string.Empty;
- else
- return context.Connection.RemoteIpAddress.ToString().Replace("::ffff:", "");
- }
- /// <summary>
- /// 获取请求者端口
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static int GetFromPort(this HttpContext context)
- {
- return context.Connection.RemotePort;
- }
- /// <summary>
- /// 根据键获取请求的查询参数的值
- /// </summary>
- /// <param name="context"></param>
- /// <param name="strKey"></param>
- /// <returns></returns>
- public static string? GetQueryValue(this HttpContext context, string strKey)
- {
- return context.Request.Query[strKey];
- }
- /// <summary>
- /// 获取请求的参数json,不分请求方式
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static async Task<string> GetParamJson(this HttpContext context)
- {
- string strParamJson = string.Empty;
- string strMethod = context.GetMethod();
- switch (strMethod)
- {
- case "GET":
- case "DELETE":
- strParamJson = context.GetQueryJson();
- break;
- case "PUT":
- case "POST":
- strParamJson = await context.GetBodyJson();
- break;
- }
- return strParamJson;
- }
- /// <summary>
- /// 获取请求的查询参数json
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static string GetQueryJson(this HttpContext context)
- {
- JObject jo = new JObject();
- foreach (string strKey in context.Request.Query.Keys)
- {
- jo.Add(strKey, context.Request.Query[strKey].ToString());
- }
- return jo.ToJson();
- }
- /// <summary>
- /// 获取请求的body参数json
- /// </summary>
- /// <param name="context"></param>
- /// <returns></returns>
- public static async Task<string> GetBodyJson(this HttpContext context)
- {
- StreamReader stream = new StreamReader(context.Request.Body);
- string strRawJson = await stream.ReadToEndAsync();
- return JsonConvert.DeserializeObject(strRawJson).ToJson();
- }
- }
- }
|