ASP.NET Core 사용 GraphicQL 제1장 Hello World

4862 단어 asp.netcoregraphql
머리말
REST 스타일 의 API 에 싫 증 이 났 습 니까?GraphQL 에 대해 이야기 합 시다.
 다음은 GraphQL 의 정의 입 니 다.
GraphQL 은 API 에 사용 되 는 조회 언어 이자 데이터 조 회 를 만족 시 키 는 실행 시 입 니 다.GraphQL 은 API 의 데이터 에 대해 이해 하기 쉬 운 완전한 설명 을 제공 하여 클 라 이언 트 가 필요 한 데 이 터 를 정확하게 얻 을 수 있 고 불필요 하지 않 으 며 API 가 시간 이 지 날수 록 쉽게 발전 할 수 있 으 며 강력 한 개발 자 도 구 를 구축 하 는 데 도 사용 할 수 있 습 니 다.
GraphQL 은 페 이 스 북 이 개발 한 것 으로 2012 년 시 작 돼 2015 년 공개 됐다.
GraphQL 의 장점 은 클 라 이언 트 가 원 하 는 것 을 정확하게 조회 하고 추가 적 인 것 을 추가 하지 않 으 면 클 라 이언 트 가 API 의 공연 에 따라 사용 하기 쉽다 는 것 이다.
GraphQL 은 서버 에서 데 이 터 를 끌 어 올 리 는 성명 식 방식 을 제공 합 니 다.GraphQL 홈 페이지 에서 GraphQL 의 모든 장점 을 알 수 있 습 니 다.이 일련의 블 로그 에서 나 는 ASP.NET Core 에 GrapQL 을 통합 하고 GrapQL 을 API 조회 언어 로 사용 하 는 방법 을 보 여줄 것 이다.
GraphQL 의 성명 식 조 회 를 사용 하면 API 가 되 돌아 오 는 속성 목록 을 사용자 정의 할 수 있 습 니 다.REST API 에서 각 API 가 고정 필드 만 되 돌려 주 는 것 과 는 다르다.
GrapQL 설치
C\#에서 GraphQL 을 사용 하기 위해 GraphQL 커 뮤 니 티 에서 오픈 소스 구성 요소 인 graphql-dotnet 를 제공 합 니 다.이 시리즈 블 로그 에서 우 리 는 모두 이 구성 요 소 를 사용 할 것 이다.
우선 빈 ASP.NET Core App 을 만 듭 니 다.

dotnet new web --name chatper1
그리고 graphql-dotnet 라 이브 러 리 에 대한 인용 을 추가 합 니 다.

dotnet add package GraphQL
첫 번 째 Query 만 들 기
다음은 query 클래스 를 만 듭 니 다.Hello World Query 라 고 명명 합 니 다.graphql-dotnet 에서 조회 류 는 모두 Object Graph Type 류 를 계승 해 야 하기 때문에 Hello World Query 의 코드 는 다음 과 같 습 니 다.

using GraphQL.Types;
public class HelloWorldQuery : ObjectGraphType
{
  public HelloWorldQuery()
  {
    Field<StringGraphType>(
      name: "hello",
      resolve: context => "world"
    );
  }
}
여기 서 우리 가 일반적인 방법 Field 를 사용 하고 GraphQL 의 문자열 형식 StringGraph Type 을 전달 하여 hello 필드 를 정의 하 는 것 을 알 수 있 습 니 다.resolve 인 자 는 Func 의뢰 입 니 다.그 중에서 현재 필드 의 값 을 되 돌려 주 는 방법 을 정 의 했 습 니 다.여기 서 우 리 는 문자열 hello 를 직접 되 돌려 주 었 습 니 다.
검색 클래스 의 반환 필드 는 검색 클래스 의 구조 함수 에 정의 되 어 있 습 니 다.
현재 우 리 는 하나의 조회 류 가 있 습 니 다.다음 단 계 는 이 조회 류 를 사용 하여 구조(schema)를 구축 해 야 합 니 다.
Startup.cs 파일 의 Configure 방법 에서 다음 코드 를 사용 하여 기 존 코드 를 교체 합 니 다.

var schema = new Schema {
  Query = new HelloWorldQuery() 
};

app.Run(async (context) =>
{
  var result = await new DocumentExecuter()
    .ExecuteAsync(doc =>
    {
      doc.Schema = schema;
      doc.Query = @"
        query {
          hello
        }
      ";
    }).ConfigureAwait(false);

  var json = new DocumentWriter(indent: true)
    .Write(result)
  await context.Response.WriteAsync(json);
});
  • DocumentExecuter 류 의 Execute Async 방법 에서 저 희 는 Action 의뢰 를 정의 하고 이 의뢰 를 통 해 Execution Options 대상 을 설정 합 니 다.이 대상 은 우리 가 정의 하 는 구조(schema)를 초기 화하 고 우리 가 정의 하 는 검색 문자열 을 실행 합 니 다
  • doc.Query 는 검색 문자열 을 정의 합 니 다최종 조회 실행 결 과 는 DocumentWriter 클래스 인 스 턴 스 의 Write 를 통 해 JSON 문자열 로 변 환 됩 니 다다음은 이 프로그램 을 실행 해 보도 록 하 겠 습 니 다.
    
    dotnet run
    브 라 우 저 에서 다음 과 같은 결 과 를 볼 수 있 습 니 다.
    {
      "data": {
        "hello": "world"
      }
    }
    이상 의 예 에서 Graph QL 을 사용 하 는 것 이 생각 보다 어렵 지 않다 는 것 을 알 게 될 것 이다.Hello World Query 류 의 구조 함수 에 필드 howdy 를 추가 하고 이 필드 를 지정 하면 문자열 universe 를 되 돌려 줍 니 다.
    
    Field<StringGraphType>(
      name: "howdy",
      resolve: context => "universe"
    );
    그리고 우 리 는 Startup 클래스 의 Configure 방법 을 계속 수정 하고 우리 가 정 의 했 던 query 를 수정 합 니 다.
    
    var schema = new Schema { 
      Query = new HelloWorldQuery()
    };
    
    app.Run(async (context) =>
    {
      var result = await new DocumentExecuter()
        .ExecuteAsync(doc =>
        {
          doc.Schema = schema;
          doc.Query = @"
            query {
              hello
              howdy
            }
          ";
        }).ConfigureAwait(false);
    
      var json = new DocumentWriter(indent: true)
        .Write(result)
      await context.Response.WriteAsync(json);
    });
    항목 을 다시 시작 하면 결 과 는 다음 과 같 습 니 다.
    {
      "data": {
        "hello": "world",
        "howdy": "universe"
      }
    }
    총결산
    이 편 에서 우 리 는 단지 GraphQL 의 일부 가죽 과 털 을 접 했 을 뿐 입 니 다.당신 은 GraphQL 성명 식 행위 에 많은 문제 가 있 을 수 있 습 니 다.괜 찮 습 니 다.후속 블 로그 에서 우 리 는 GraphQL 의 베일 을 천천히 풀 었 습 니 다.다음 편 에 서 는 미들웨어(Middleware)를 만 드 는 방법 을 소개 합 니 다.
    이 원본 코드:https://github.com/lamondlu/GraphQL_Blogs ( 로 컬 다운로드 )
    자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기