OutSystems开发实践:OutSystems获取请求头信息,今天在用OutSystems实现一个日志记录功能时,需要保存相关请求的请求头信息用于日志分析,那么OutSystems获取请求头信息是如何做的呢?在开始这个话题之前,有过C# asp.net webform时代的开发经验的开发者,或者熟悉现代 .net core网站/接口开发的人员,对于这个功能来说,简直so easy.
OutSystems获取请求头信息
OutSystems是一个低代码开发平台,如果你有.net开发的经验,熟悉之后会感觉用起来还是不错的,很节约开发时间,基本上拖拖拽拽就可以开发出一个app/site出来了。不过涉及到深入一点的功能,还是需要懂原生的开发的,因为那样你可以用C# 为OutSystems写一些扩展来增强OutSystems的功能。
不过今天我们不需要自己写扩展来实现,因为可以在OutSystems的forge里面找到现成的组件直接使用即可,我们来看看吧。
首先安装HTTP Headers这个扩展,直接在Forge里面搜索 HTTP Headers,如下图所示:

接下来选中HTTP Headers,然后点击它,出现下面这个图,然后安装即可,安装完毕,就可以在OutSystems里面添加引用,然后拖进来就可以使用了。

添加引用后,直接鼠标选中该Action,拖到设计区域即可使用。如下图所示:

该扩展包含了以下3个基本的Action,用于从当前 Web 请求中检索 HTTP 标头的扩展。
包括:
- GetAllHeaders
- 返回名称/值对中的所有 HTTP 标头
- GetHeaderValue
- 返回与给定名称匹配的第一个 HTTP 标头值
- GetHeaderValues
- 返回与给定名称匹配的所有 HTTP 标头值
参考链接:https://www.outsystems.com/forums/discussion/47224/get-header-values-from-the-rest-request/
是不是很简单呢?那我们来回味一下asp.net webform时代是如何获取请求头的。
asp.net webform怎样获取所有的请求头信息?
在 ASP.NET WebForms 中,可以使用 HttpContext.Current.Request.Headers 获取所有的请求头信息。以下是一个简单的代码示例:
在代码后置文件中(.aspx.cs)
using System;
using System.Collections.Specialized;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 获取所有的请求头信息
NameValueCollection headers = Request.Headers;
foreach (string key in headers.AllKeys)
{
string[] values = headers.GetValues(key);
if (values != null)
{
foreach (string value in values)
{
Response.Write($"{key}: {value}<br />");
}
}
}
}
}
在 ASPX 文件中
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html>
<head>
<title>Request Headers</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- 请求头信息将在这里显示,https://jhrs.com 首发 -->
</div>
</form>
</body>
</html>
解释
- 获取请求头:使用
Request.Headers获取所有请求头信息。 - 遍历并输出请求头:遍历
Headers集合中的所有键值对,并将其输出到响应中。
通过这种方法,可以在 ASP.NET WebForms 中获取并显示所有的请求头信息。
asp.net core API中如何获取请求头信息?
在 ASP.NET Core 中,可以通过 HttpContext.Request.Headers 获取所有的请求头信息。以下是一个简单的示例,展示了如何在控制器中获取和显示请求头信息:
创建一个控制器
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Linq;
namespace YourNamespace.Controllers
{
[ApiController]
[Route("[controller]")]
public class HeadersController : ControllerBase
{
private readonly ILogger<HeadersController> _logger;
public HeadersController(ILogger<HeadersController> logger)
{
_logger = logger;
}
[HttpGet]
public IActionResult GetHeaders()
{
var headers = Request.Headers.Select(h => $"{h.Key}: {string.Join(", ", h.Value)}");
return Ok(string.Join("\n", headers));
}
}
}
解释
- 控制器:创建一个名为
HeadersController的控制器,定义一个 GET 方法GetHeaders。 - 获取请求头:通过
Request.Headers获取所有请求头,并将其格式化为键值对字符串。 - 返回结果:将所有请求头信息作为字符串返回。
通过这个示例,当你访问 https://jhrs.com/headers 时,服务器会返回所有的请求头信息。
asp.net core razor pages里面怎样获取所有的请求头信息?
在 ASP.NET Core Razor Pages 中,可以通过 HttpContext.Request.Headers 获取所有的请求头信息。以下是一个完整的示例,展示了如何在 Razor Page 中获取和显示请求头信息:
在 Razor Page 的代码后置文件中
首先,在 Razor Page 的代码后置文件(.cshtml.cs)中添加以下代码:
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Linq;
namespace YourNamespace.Pages
{
public class HeadersModel : PageModel
{
private readonly ILogger<HeadersModel> _logger;
public HeadersModel(ILogger<HeadersModel> logger)
{
_logger = logger;
}
public Dictionary<string, string> RequestHeaders { get; private set; }
public void OnGet()
{
RequestHeaders = Request.Headers.ToDictionary(h => h.Key, h => string.Join(", ", h.Value));
}
}
}
在 Razor Page 的视图文件中
然后,在 Razor Page 的视图文件(.cshtml)中添加以下代码:
@page
@model YourNamespace.Pages.HeadersModel
@{
ViewData["Title"] = "Request Headers";
}
<h2>Request Headers</h2>
<table class="table">
<thead>
<tr>
<th>Header</th>
<th>Value</th>
</tr>
</thead>
<tbody>
@foreach (var header in Model.RequestHeaders)
{
<tr>
<td>@header.Key</td>
<td>@header.Value</td>
</tr>
}
</tbody>
</table>
解释
- 代码后置文件:
- 创建
HeadersModel类,继承自PageModel。 - 在
OnGet方法中,获取请求头信息并存储在RequestHeaders字典中。
- 创建
- 视图文件:
- 在视图文件中,遍历
RequestHeaders字典并将其显示在表格中。
- 在视图文件中,遍历
通过这种方法,可以在 ASP.NET Core Razor Pages 中获取并显示所有的请求头信息。

【江湖人士】(jhrs.com)原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2024/49286.html
扫码加入电报群,让你获得国外网赚一手信息。