为什么当我从 Angular 传递 graphql 查询时,GraphQL Controller 中的参数查询为空?
Why parameter query is null in GraphQL Controller when I pass graphql query from Angular?
我正在尝试使用 GraphQL,我正确地构建了所有内容,但是当我从 Angular 方法中的应用程序参数 'query' 调用图形控制器时,方法为空,但是当我从 Postman 调用时,所有内容效果不错。
另外我用Apollo连接GraphQl
查看我的 GraphQl 控制器:
[Route("graphql")]
public class GraphQLController : Controller
{
[HttpPost]
public async Task<IActionResult> Post([FromBody] GraphQLQuery query)
{
try
{
var schema = new Schema { Query = new StarWarsQuery() };
var result = await new DocumentExecuter().ExecuteAsync(_ =>
{
_.Schema = schema;
_.Query = query.Query;
}).ConfigureAwait(false);
if (result.Errors?.Count > 0)
{
return BadRequest();
}
return Ok(result);
}
catch (Exception ex)
{
throw new Exception();
}
}
}
这是我的 angular 代码:
import { Component, OnInit, Query } from '@angular/core';
import { Apollo } from 'apollo-angular';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';
import gql from 'graphql-tag';
import { Course, CourseList } from './types';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(
private apollo: Apollo
) { }
courses: Observable<Course[]>;
ngOnInit() {
this.apollo.query({query: gql`query { allCourses {id title author descriptin topic url }}`}).subscribe(console.log);
}
}
邮递员请求:
{
"query": "query { allCourses {id title author descriptin topic url }}"
}
邮递员的请求一切正常:
但是当我尝试从 angular 发送时,查询为空:
以防万一其他人遇到这个问题,我找到了解决方案!
如果您导航到 GraphQLQuery
class 的定义,请将 public string Variables { get; set; }
从 string
更改为 object
,这样它就变成了:
public object Variables { get; set; }
查询将不再为空
我正在尝试使用 GraphQL,我正确地构建了所有内容,但是当我从 Angular 方法中的应用程序参数 'query' 调用图形控制器时,方法为空,但是当我从 Postman 调用时,所有内容效果不错。
另外我用Apollo连接GraphQl
查看我的 GraphQl 控制器:
[Route("graphql")]
public class GraphQLController : Controller
{
[HttpPost]
public async Task<IActionResult> Post([FromBody] GraphQLQuery query)
{
try
{
var schema = new Schema { Query = new StarWarsQuery() };
var result = await new DocumentExecuter().ExecuteAsync(_ =>
{
_.Schema = schema;
_.Query = query.Query;
}).ConfigureAwait(false);
if (result.Errors?.Count > 0)
{
return BadRequest();
}
return Ok(result);
}
catch (Exception ex)
{
throw new Exception();
}
}
}
这是我的 angular 代码:
import { Component, OnInit, Query } from '@angular/core';
import { Apollo } from 'apollo-angular';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';
import gql from 'graphql-tag';
import { Course, CourseList } from './types';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(
private apollo: Apollo
) { }
courses: Observable<Course[]>;
ngOnInit() {
this.apollo.query({query: gql`query { allCourses {id title author descriptin topic url }}`}).subscribe(console.log);
}
}
邮递员请求:
{
"query": "query { allCourses {id title author descriptin topic url }}"
}
邮递员的请求一切正常:
但是当我尝试从 angular 发送时,查询为空:
以防万一其他人遇到这个问题,我找到了解决方案!
如果您导航到 GraphQLQuery
class 的定义,请将 public string Variables { get; set; }
从 string
更改为 object
,这样它就变成了:
public object Variables { get; set; }
查询将不再为空