OutSystems开发实践:OutSystems获取请求头信息

OutSystems开发实践:OutSystems获取请求头信息,今天在用OutSystems实现一个日志记录功能时,需要保存相关请求的请求头信息用于日志分析,那么OutSystems获取请求头信息是如何做的呢?

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,如下图所示:

OutSystems开发实践:OutSystems获取请求头信息
OutSystems开发实践:OutSystems获取请求头信息

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

OutSystems开发实践:OutSystems获取请求头信息 1
OutSystems开发实践:OutSystems获取请求头信息 4

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

OutSystems开发实践:OutSystems获取请求头信息 2

该扩展包含了以下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>

解释

  1. 获取请求头:使用 Request.Headers 获取所有请求头信息。
  2. 遍历并输出请求头:遍历 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));
        }
    }
}

解释

  1. 控制器:创建一个名为 HeadersController 的控制器,定义一个 GET 方法 GetHeaders
  2. 获取请求头:通过 Request.Headers 获取所有请求头,并将其格式化为键值对字符串。
  3. 返回结果:将所有请求头信息作为字符串返回。

通过这个示例,当你访问 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>

解释

  1. 代码后置文件
    • 创建 HeadersModel 类,继承自 PageModel
    • OnGet 方法中,获取请求头信息并存储在 RequestHeaders 字典中。
  2. 视图文件
    • 在视图文件中,遍历 RequestHeaders 字典并将其显示在表格中。

通过这种方法,可以在 ASP.NET Core Razor Pages 中获取并显示所有的请求头信息。

加入电报群

【江湖人士】(jhrs.com)原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2024/49286.html

扫码加入电报群,让你获得国外网赚一手信息。

文章标题:OutSystems开发实践:OutSystems获取请求头信息

(0)
江小编的头像江小编
上一篇 2024-07-19 23:38
下一篇 2024-07-25 16:22

热门推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

国外老牌便宜域名服务商Namecheap注册com域名大优惠,抢到就赚到,优惠码:NEWCOM698
$5.98/年
直达官网