我已经在 Delphi 中用MARS REST Library构建了一个基本的API,我想知道是否有一种方法可以从资源函数中以某种方式获得连接到端点的客户端的User-Agent
。什么是正确的“MARS”方式来做到这一点?
例如,我有以下代码:
type
[Path('helloworld')]
THelloWorldResource = class
protected
public
[GET, Produces(TMediaType.TEXT_PLAIN)]
function SayHelloWorld: string;
end;
implementation
uses
MARS.Core.Registry;
{ THelloWorldResource }
function THelloWorldResource.SayHelloWorld: string;
begin
Result := 'Hello World!';
end;
字符串
如何从SayHelloWorld
函数中获取User-Agent
字符串?这可能吗
我基本上想知道每个端点的请求来自哪里,还想了解统计数据,以了解哪些用户代理设备在我的请求中最常见。我需要从服务器端获取,而不是从客户端通过端点主体或头端发送,因为任何人都可以从客户端修改User-Agent,甚至根本不发送。
1条答案
按热度按时间ddrv8njm1#
在
IMARSRequest
接口中有一个GetUserAgent
函数,你可以使用它。IMARSRequest
接口是MARS.Core.RequestAndResponse.Interfaces
单元的一部分。下面是您的代码,但是修改后使用上面提到的
GetUserAgent
函数获取User-Agent
字符串:字符串
来显示代码的工作。以下是我从 Postman 那里得到的一个请求:
x1c 0d1x的数据
您好,您的用户代理字符串是:
PostmanRuntime/7.32.3
然后我用JavaScript从我的浏览器发出另一个请求,这是那里的响应:
您好,您的用户代理字符串是:
Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82