如何在ASP.NET Core 6中传递GraphQL的content-language:ar请求头
解决ASP.NET Core中GraphQL请求添加Content-Language头的问题
你可以通过两种方式添加Content-Language: ar请求头,根据需求选择:
方法一:给GraphQL客户端添加全局默认请求头
如果所有GraphQL请求都需要携带这个头,创建GraphQLHttpClient实例后,直接操作其内部的HttpClient添加默认请求头:
var client = new GraphQLHttpClient(options, new NewtonsoftJsonSerializer()); // 添加全局默认请求头 client.HttpClient.DefaultRequestHeaders.Add("Content-Language", "ar");
或者在配置GraphQLHttpClientOptions时,通过ConfigureHttpClient提前设置:
var options = new GraphQLHttpClientOptions { EndPoint = new Uri("https://EndPoint/graphql"), ConfigureHttpClient = (httpClient) => { httpClient.DefaultRequestHeaders.Add("Content-Language", "ar"); } };
方法二:给单个GraphQL请求添加请求头
如果只有这个Tracking接口的请求需要携带该头,直接在GraphQLRequest对象中设置Headers属性:
var request = new GraphQLRequest { Query = query, // 给当前请求单独添加请求头 Headers = new Dictionary<string, string> { { "Content-Language", "ar" } } };
额外优化建议
你当前直接将code变量拼接到GraphQL查询字符串中,存在注入风险。建议改用GraphQL变量传递参数,示例如下:
// 使用变量定义查询 var query = @" query($code: String!) { shipment(code: $code) { id code customerDue createdAt collected paidToCustomer paidToDeliveryAgent } }"; var request = new GraphQLRequest { Query = query, Variables = new { code = code }, // 传递变量 Headers = new Dictionary<string, string> { { "Content-Language", "ar" } } };
内容的提问来源于stack exchange,提问作者عالم ديم
相关产品推荐
相关产品推荐

