本地Postgraphile正常,HttpClient发POST请求报405 Method Not Allowed
解决Postgraphile POST请求405方法不允许错误
你遇到的405错误主要出在两个地方,修正后就能正常请求:
- 请求端点错误:你当前把请求发到了
/graphiql,这个是GraphiQL的可视化调试界面,仅接受GET请求用于加载UI,不处理API的POST请求。正确的GraphQL API端点是/graphql。 - 请求格式错误:你发送的是纯查询字符串,但
application/json格式要求内容是包含query字段的JSON对象,不能直接传裸字符串。
修正后的代码示例:
using (HttpClient httpClient = new HttpClient()) { // 构造符合JSON格式的请求体 var requestBody = new { query = "query {accounts {nodes {id,name,street,postalcode,city}}}" }; var jsonContent = System.Text.Json.JsonSerializer.Serialize(requestBody); var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json"); // 发送到正确的/graphql端点 var responseMessage = await httpClient.PostAsync("http://localhost:5000/graphql", httpContent); var result = await responseMessage.Content.ReadAsStringAsync(); // 这里要加await才能获取实际结果 }
如果你的项目习惯用Newtonsoft.Json,也可以替换序列化代码:
var jsonContent = Newtonsoft.Json.JsonConvert.SerializeObject(requestBody);
内容的提问来源于stack exchange,提问作者Mohammad Almasi
相关产品推荐
相关产品推荐

