ASP.NET Core 사용 GraphicQL 제1장 Hello World
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);
});
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 ( 로 컬 다운로드 )
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.