gpt4 book ai didi

jquery - 将授权 header 中的 api key 发送到 REST Web API

转载 作者:行者123 更新时间:2023-12-01 07:13:51 25 4
gpt4 key购买 nike

我有一个 REST Web API,它接收一些 apiKeyGET 的示例此 Web API 的操作是:

public HttpResponseMessage Get(int id, string apiKey)

我的 Web API 中定义的唯一路由是:

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

现在,有一个使用此 Web API 的 Web 客户端,它发送 apiKey在执行 GET 时的查询字符串中请求。

据我了解,最好发送apiKey在请求的授权 header 中。

有人可以告诉我如何做 GET请求并输入 apiKey在授权 header 中,并且仍然落在正确的操作方法中(我的意思是上面的 Get 方法)?

最佳答案

您可以欺骗 Web api,使其认为授权 header 是来自带有小消息处理程序的查询字符串的参数。

 public class ApiKeyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var routeData = request.GetRouteData();

if (request.Headers.Authorization != null && !routeData.Values.ContainsKey("apikey"))
{
routeData.Values.Add("apikey",request.Headers.Authorization.Parameter);
}
return base.SendAsync(request, cancellationToken);
}
}

此处理程序将获取从 URI 中提取的路由数据,如果您传递授权 header ,它将获取参数值并将其设置为 apikey 路由参数。

授权 header 需要类似于

Authorization: apikey 12323434234234234

您可以通过将此链接添加到 WebApiConfig.Register 方法中来安装消息处理程序。

config.MessageHandlers.Add(new ApiKeyHandler());

顺便说一句,您可以使用这样的处理程序来实际验证 ApiKey。这样,您实际上不需要将 apikey 传递给您的操作方法。如果 ApiKey 不好,只需直接从处理程序返回 401。

关于jquery - 将授权 header 中的 api key 发送到 REST Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com