GraphQL이란?ASP에서 사용하는 방법NET 코어 웹에이피?간단하게 설명해 드릴게요..
내가 참여하는 모든 프로젝트에서 REST API는 항상 사용됩니다.REST API 아키텍처는 간단명료하고 새로운 개발자가 이해하기 쉬우며 모든 API가 같은 구조를 가지기 때문에 오류가 발생하기 쉽다.
일반적인 REST API에서는 각 객체 유형마다 별도의 끝점이 있습니다.이 끝점은 사용자의 구현을 바탕으로 GET, POST, PUT, PATCH 및 DELETE 작업을 제공합니다.이 외에도 ID 또는 날짜 기반 등의 데이터를 필터링할 수 있는 쿼리 매개 변수를 가져올 수 있습니다.그러나 당신이 결과를 얻을 때, 당신은 모든 물체를 얻을 수 있다.영역별 설계 아키텍처를 사용하고 수백만/수십억 개의 집합 대상을 처리할 때 더 큰 문제가 될 수 있습니다.
GraphQL에 진입 중...
GraphQL is a query language for APIs. GraphQL gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
페이스북은 2012년 이 같은 문제를 해결하기 위해 GraphQL을 구축했다.GraphQL은 보통 단점이 있습니다.그리고 이 단점은 조회를 받아들인다.지금까지 그다지 매력적이지는 않았지만, 진정한 아름다움은 내가 방금 언급한 의문에 있다.검색에서 원하는 유형, 필터로 사용할 속성 값, 되돌려 주고 싶은 유형의 속성을 언급합니다.
GraphQL은 어떻게 일합니까?
예상한 바와 같이, 한 개 이상의 유형을 요청할 수 있으며, 모든 속성에 따라 검색/선별할 수 있으며, 관심 있는 속성만 얻을 수 있습니다.질의는 JSON 형식으로, 결과를 JSON 형식으로 반환합니다.이는 서버의 왕복을 여러 번 절약하고 서버 부하, 네트워크 유량과 지연을 줄일 수 있다.
나는 네가 조회 예시를 보고 매우 기뻐하는 것을 안다.내가 너희들에게 알려줄게.
묻다
query PersonAndFriends {
person (id: 2001) {
name
friends {
name
}
}
}
결실
{
"data": {
"person": {
"name": "Rose DeWitt",
"friends": [
{
"name": "Jack Dawson"
},
{
"name": "Cal Hockley"
},
{
"name": "Ruth DeWitt"
}
]
}
}
}
위에서 나는'Person And Friends'라는 검색어를 정의했다. 내가 요청한 사람은 ID=2001인데 나는 그 이름과 친구 필드를 되돌려 주고 싶다.friends (그룹일 수 있음) 에서name 필드만 되돌려 달라고 요구합니다.이외에도 GraphQL 조회의 모양은 조회 결과와 매우 일치합니다.멋있지 않아요?세 가지 유형의 조회가 있다.조회 자체, 변이 및 구독조회는 데이터를 요청하는 방식이고mutate는 데이터를 변경하는 방식(예를 들어 신기록 만들기, 갱신 기록, 삭제 기록)이다.
검색은 변수를 받아들인다. 이렇게 하면 문자열을 조작해서 파라미터를 동적으로 배치할 필요가 없다.
변수 포함 질의
query PersonQuery($id: ID!) {
person(id: $id) {
name
}
}
{
"id": 2001
}
{
"id": 2001
}
결실
{
"data": {
"person": {
"name": "Rose DeWitt",
}
}
}
내부에서, 검색과 형식의 모든 필드는 Resolver라는 단독 함수로 지원되며, 이 함수는 개발자가GraphQL에 제공합니다.쿼리의 실행은 들어오는 매개 변수를 사용하여 쿼리를 호출하는 해상도 함수로부터 시작됩니다.함수가 객체를 반환하면 GraphQL은 해당 객체로 전송되는 파서를 실행합니다.선택한 필드마다 GraphQL은 값을 얻기 위해 해상도 함수를 호출합니다.모든 분석 프로그램이 대상이 아닌 표량 형식을 되돌릴 때까지 이 과정은 계속될 것입니다.이것은 GraphQL이 모든 잎을 덮을 때까지 그림의 뿌리부터 훑어보는 것과 같아서,graph 검색 언어라고 명명됩니다.GraphQL은 어떻게 사용합니까?
GraphQL을 사용하기 위해서는 두 가지를 제공해서 GraphQL 서버를 구축해야 한다.우선, 대상 유형, 어떤 데이터를 조회할 수 있는지, 그리고 어떻게 조회할 수 있는지.GraphQL에서 질의를 검증하고 실행하는 데 도움이 되는 유형 및 패턴을 정의합니다.그 다음에 모든 유형과 필드의 해상도 함수입니다.
유형 정의
type Query {
actor(episode: Episode): Cast
car(id: ID!): Vehicle
}
type Cast {
id: ID!
name: String!
episode: [Episode!]!
height(unit: LengthUnit = METER): Float
}
enum Episode {
PILOT
ONE
FINALE
}
"!"필드 유형 뒤에 표시 필드를 비워둘 수 없으며 필드를 질의할 때 항상 값이 있습니다.[과]는 배열을 나타냅니다.필드에는 매개 변수가 있을 수 있고 매개 변수에는 기본값(예: 높이 필드)이 있을 수 있습니다.내장 눈금 유형은 Int(32비트 정수), Float, String, Boolean 및 ID(인간이 읽을 수 없는 고유 문자열)일 수 있습니다.검색 구조는 실제로는'query'라는 또 다른 유형이다.그것은 어떤 필드가 조회될 수 있는지, 그리고 필드마다 어떤 파라미터를 받아들일 수 있는지 정의한다.또한 비워둘 수 없는 필드와 매개변수를 정의합니다.돌연변이도 같은 방식으로 정의된다.
GraphQL에서는 질의나 변이에 매개 변수로 전달할 수 있는 입력 객체 유형을 정의할 수 있습니다.입력 유형은 입력 키워드를 사용하여 개별적으로 정의해야 합니다.입력 유형은 다른 입력 유형과 관계가 있지만 객체 유형이나 매개변수를 참조할 수 없습니다.
input FoodReviewInput {
stars: Int!
comment: String
}
파서 함수 정의하기
이것은 매우 간단합니다. 함수부터 검색어를 해석하십시오.
Query: {
actor(obj, args, context, info) {
return context.db.getActorByID(args.id).then(
response => new Actor(response)
)
}
}
모든 함수에는 네 개의 매개 변수가 있는데 obj는 전 함수를 실행한 후에 생성된 대상이고args는 필드나 조회 매개 변수이며 context는 로그인 사용자 등 정보를 포함하는 상하문 대상이며 info는 조회와 그 유형에 대한 정보를 포함한다.이와 같이 유형과 필드에 대한 나머지 함수를 정의할 수 있습니다.
Actor: {
name(obj, args, context, info) {
return obj.name
}
Vehicle(obj, args, context, info) {
return obj.vehicleIDs.map(
id => context.db.getVehicleByID(id).then(
response => new Vehicle(response)
)
)
}
}
하지만 이것은 매우 큰 일인 것 같다!
네, 하지만 좋은 소식은 많은 사용 가능한 라이브러리들이 복잡성에서 벗어날 수 있다는 것입니다.대상의 정의, 권한 부여, 안전성, 페이지 나누기, 캐시 등을 담당합니다.GraphQL 사이트는 선택한 프로그래밍 언어 here 에서 사용할 수 있는 라이브러리와 도구 목록을 제공합니다.
에서 GraphQL을 사용하는 방법순핵심?
나는 hotchocolate library를 찾았는데, 대부분의 작업을 완성했고, 곧 깔끔한GraphQL 서버를 만들었다.나는 그것의 강좌가 매우 간결하다는 것을 발견했다. 너는 그것을 찾을 수 있다. here
설계자 토론: GraphQL은 언제 사용합니까?
다른 어떤 기술과 마찬가지로 GraphQL도 장단점이 있다.당신이 구조 결정을 내리고 싶을 때, 이러한 장점과 단점을 의식하고, 이 기술이 당신이 이루고자 하는 목표를 실현할 수 있도록 확보해야 한다.GraphQL 및 REST Api의 다음 사항을 알아냈습니다.
당신이 얻은 것은:
참고 사항:
어떻게 더 많이 알아요...
Reference
이 문제에 관하여(GraphQL이란?ASP에서 사용하는 방법NET 코어 웹에이피?간단하게 설명해 드릴게요..), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/programmerbyda1/what-is-graphql-how-to-use-it-in-asp-net-core-webapi-let-me-explain-simply-2hhm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)