GO에서 그래프 QL 서버 구축
GO MOD Init, 2. GQLGEN CLI 설치, 3. Schema에서 스키마를 정의합니다. Schema.graphQLS, 4. GQLGEN Init, 모델 및 Resolvers를 생성하기 위해 스키마를 정의하십시오. http : // localhost : 8080, 여기서 gqlgen은 이동 중에 유형-안전, 스키마 우선 및 생산 준비 그래프 QL 서버를 제공합니다.
GO에서 그래프 QL 서버를 구축하는 것은 graphql-go
및 gqlgen
과 같은 라이브러리 덕분에 점점 인기를 얻었습니다. 둘 다 스키마를 정의하고 쿼리를 해결할 수 있지만 GQLGEN은 특히 생산 애플리케이션을위한보다 현대적이고 유형-안전하고 개발자 친화적 인 선택입니다 .

다음은 Boilerplate 최소화와 최대 선명도를 사용하여 GQLGEN을 사용하여 GO에서 기본 GraphQL Server를 설정하는 방법입니다.
✅ 1. GO 모듈을 초기화하십시오
새 프로젝트 디렉토리를 만들고 GO 모듈 초기화로 시작하십시오.

mkdir GraphQL-Go-Server CD GraphQL-Go-Server mod init github.com/yourusername/graphql-go-server로 이동하십시오
✅ 2. GQLGEN을 설치하십시오
github.com/99designs/gqlgen@latest를 설치하십시오
gqlgen
CLI가 PATH
에 있는지 확인하십시오.
✅ 3. 기본 스키마 생성 ( schema.graphqls
)
프로젝트 루트에서 schema.graphqls
라는 파일을 만듭니다.

todo { ID : ID! 제목 : 문자열! 완료 : 부울! 사용자 : 사용자! } 유형 사용자 { ID : ID! 이름 : 문자열! } 유형 쿼리 { TODOS : [TODO!]! } 입력 NewTodo { 제목 : 문자열! userid : 문자열! } 유형 돌연변이 { CreateTodo (입력 : Newtodo!) : Todo! }
이것은 정의합니다 :
- 두 가지 유형 :
Todo
와User
- Todos를 가져 오는 쿼리
- 새로운 할로대를 만들기위한 돌연변이
✅ 4. 모델과 해결책을 생성합니다
GQLGEN을 실행하여 초기 코드를 생성하십시오.
gqlgen init
이것은 :
- 생성 된
generated.go
(자동 생성 된 Resolvers) - 스터브로
graph/schema.resolvers.go
를 만듭니다 -
server.go
에서 기본 서버를 설정하십시오
이제 필요한 경우 생성 된 모델을 사용자 정의 할 수 있습니다. 또는 GQLGEN이 gqlgen.yml
편집하여 스키마에서 생성하도록합니다.
모델 : TODO : 전지: ID: Resolver : False 제목: Resolver : False 완료: Resolver : False 사용자: RESOLVER : TRUE # 이에 대한 리졸버를 작성하겠습니다
그런 다음 모델 만 재생합니다.
gqlgen이 생성합니다
✅ 5. Resolvers를 구현하십시오
graph/resolver.go
및 graph/schema.resolvers.go
편집.
예 : Todos를위한 Resolver
graph/schema.resolvers.go
에서 :
func (r *QueryResolver) todos (ctx context.context) ([] *model.todo, error) { return []*model.todo { { ID : "1", 제목 : "Learn Go", 완료 : 거짓, 사용자 : & model.user {id : "1", 이름 : "Alice"}, }, }, nil }
돌연변이 : CreateTodo
func (r *mutationResolver) CreateTodo (ctx context.context, input model.newtodo) ( *model.todo, error) { todo : = & model.todo { ID : "2", // 실제 앱에서 UUID 또는 DB 자동 인증 사용 제목 : input.title, 완료 : 거짓, 사용자 : & model.user {id : input.userid, 이름 : "알 수없는"}, } Todo, Nil }
또한 Resolver Struct가 graph/resolver.go
에 등록되어 있는지 확인하십시오.
✅ 6. HTTP 서버를 설정하십시오
gqlgen init
에서 만든 server.go
는 다음과 같습니다.
패키지 메인 수입 (수입) "통나무" "net/http" "github.com/yourusername/graphql-go-server/graph" "github.com/99designs/gqlgen/graphql/handler" "github.com/99designs/gqlgen/graphql/playground" )) func main () { srv : = handler.newdefaultserver (graph.newexecutableschema (graph.config {resolvers : & graph.resolver {}}))) http.handle ( "/", Playground.handler ( "GraphQL Playground", "/Query"))) http.handle ( "/query", srv) log.printf ( "http : // localhost : 8080/for GraphQL Playground에 연결")) log.fatal (http.listenandserve ( ": 8080", nil)) }
✅ 7. 서버를 실행하십시오
Server.go를 실행하십시오
http://localhost:8080
으로 브라우저를 열면 GraphQL Playground가 표시됩니다.
쿼리 시도 :
쿼리 { 토 도스 { ID 제목 완료 사용자 { 이름 } } }
또는 돌연변이 :
돌연변이 { CreateTodo (입력 : {제목 : "구매 우유", userId : "2"}) { ID 제목 완료 사용자 { 이름 } } }
? 실제 사용을위한 팁
- 데이터베이스 사용 :
pg
,gorm
또는ent
통해 PostgreSQL, MongoDB 등과 통합하십시오. - 컨텍스트 추가 : Auth, Logging 또는 Tracing에
context.Context
사용하십시오. - 오류 처리 : 필요할 때 적절한
gqlerror.Errorf
반환합니다. - 유효성 검사 : 레코드를 작성하기 전에 입력을 검증합니다.
- 스키마 스티치 또는 연합 : 더 큰 앱의 경우 서비스 모듈화 서비스를 고려하십시오.
? 왜 gqlgen인가?
- Schema-First : 먼저 API 계약을 작성하십시오.
- 유형 안전 : GO 스트러크는 스키마에서 생성됩니다.
- 최소 보일러 플레이트 : 필요한 경우에만 글을 쓰십시오.
- 적극적으로 유지 관리 : 많은 팀의 생산에 사용됩니다.
기본적으로 gqlgen
사용하면 확장되는 깨끗하고 유지 관리 가능한 그래프 QL 서버가 잘 확정됩니다. 그것은 마술이 아니지만 명확성과 통제를 소중히 여기는 GO 개발자에게 올바른 트레이드 오프를 만듭니다.
위 내용은 GO에서 그래프 QL 서버 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

답은 : GO 애플리케이션에는 필수 프로젝트 레이아웃이 없지만 커뮤니티는 일반적으로 유지 보수 및 확장 성을 향상시키기 위해 표준 구조를 채택합니다. 1.CMD/저장 프로그램 입구, 각 하위 디렉토리는 CMD/MyApp/Main.go와 같은 실행 파일에 해당합니다. 2. 내부/ 저장 개인 코드, 외부 모듈로 가져올 수 없으며 비즈니스 로직 및 서비스를 캡슐화하는 데 사용됩니다. 3. PKG/ 상점은 다른 프로젝트를 수입하기위한 공개 재사용 가능한 라이브러리; 4.api/ 선택적으로 OpenApi, protobuf 및 기타 API 정의 파일을 저장합니다. 5. Config/, Scripts/및 Web/Store 구성 파일, 스크립트 및 웹 리소스 각각; 6. 루트 디렉토리에는 go.mod and go.sum이 포함되어 있습니다

bufio.scanner를 사용하는 것은 파일을 라인별로 읽는 가장 일반적이고 효율적인 방법이며, 큰 파일, 로그 구문 분석 또는 구성 파일과 같은 시나리오를 처리하는 데 적합합니다. 1. OS.Open을 사용하여 파일을 열고 DeFerfile.close ()를 통해 파일을 닫으십시오. 2. bufio.newscanner를 통해 스캐너 인스턴스를 만듭니다. 3. For Loop의 Scanner.scan ()을 FORLE의 끝에 도달하거나 오류가 발생 함을 나타내도록 False가 반환 될 때까지 라인별로 라인별로 읽습니다. 4. Scanner.text ()를 사용하여 현재 라인 내용을 얻으십시오 (라인 브레이크 제외). 5. 루프가 끝난 후 스캐너를 확인하십시오. 이 방법에는 메모리 효과가 있습니다

GO의 IF-ELSE 문에는 괄호가 필요하지 않지만 곱슬 버팀대를 사용해야합니다. 그것은 범위를 제한하는 if에서 초기화 변수를 지원합니다. 조건은 Elseif 체인을 통해 판단 될 수 있으며, 종종 오류 검사에 사용됩니다. 변수 선언과 조건의 조합은 코드의 단순성과 보안을 향상시킬 수 있습니다.

Gorun은 GO 프로그램을 신속하게 컴파일하고 실행하기위한 명령입니다. 1. 컴파일을 완료하고 한 단계로 실행하고, 임시 실행 파일을 생성하고 프로그램이 완료된 후 삭제합니다. 2. 주요 기능을 포함하는 독립적 인 프로그램에 적합하며, 이는 개발 및 테스트가 쉬운 주요 기능; 3. 멀티 파일 작동을 지원하며 Gorun*.go를 통해 실행할 수 있습니다. 4. 종속성을 자동으로 처리하고 모듈 시스템을 사용하여 외부 패키지를 구문 분석합니다. 5. 라이브러리 나 패키지에는 적합하지 않으며 지속적인 이진 파일을 생성하지 않습니다. 따라서 스크립트, 학습 및 빈번한 수정 중에 빠른 테스트에 적합합니다. 효율적이고 간결한 달리기 방법입니다.

GO에서는 Const 키워드를 사용하여 상수가 선언되며 값은 변경 될 수 없으며 유형이나 유형이 없을 수 있습니다. 1. constpi = 3.14159와 같은 단일 상수 선언; 2. 블록의 다중 상수 선언은 const (pi = 3.14159; 언어 = "go"; iscool = true); 3. constsecondsinminuteint = 60과 같은 명시 적 유형 상수; 4. IOTA를 사용하여 const (일요일 = iota; 월요일; 화요일)와 같은 열거 값을 생성하면 값 0, 1 및 2가 순서대로 할당되며 IoTa는 비트 작업과 같은 표현식에 사용될 수 있습니다. 상수는 컴파일 시간에 값을 결정해야합니다.

Go의 플래그 패키지는 명령 줄 매개 변수를 쉽게 구문 분석 할 수 있습니다. 1. 플래그를 사용하여 문자열, 정수 및 부울과 같은 유형 플래그를 정의합니다. 2. PONINT가 작동하지 않도록 플래그를 통해 변수로 플래그를 구문 분석 할 수 있습니다. 3. flag.parse ()를 호출 한 후 flag.args ()를 사용하여 후속 위치 매개 변수를 얻습니다. 4. 플래그 구현 값 인터페이스는 가장 간단한 CLI 요구 사항을 충족하기 위해 사용자 정의 유형을 지원할 수 있습니다. 복잡한 시나리오는 SPF13/COBRA 라이브러리로 대체 할 수 있습니다.

GO 응용 프로그램의 라우팅은 프로젝트 복잡성에 따라 다릅니다. 1. 표준 라이브러리 net/httpservemux는 외부 의존성이없는 간단한 응용 프로그램에 적합하며 가벼우 며 URL 매개 변수 및 고급 매칭을 지원하지 않습니다. 2. CHI와 같은 타사 라우터는 미들웨어, 경로 매개 변수 및 중첩 라우팅을 제공하며, 이는 모듈 식 설계에 적합합니다. 3. Gin은 탁월한 성능, 내장 JSON 처리 및 풍부한 기능을 가지고 있으며,이 기능은 API 및 마이크로 서비스에 적합합니다. 유연성, 성능 또는 기능 통합이 필요한지 여부에 따라 선택해야합니다. 소규모 프로젝트는 표준 라이브러리, 중간 및 대형 프로젝트를 사용하여 Chi 또는 Gin을 권장하며 간단한 곳에서 복잡하게 원활한 확장을 달성합니다.

GO에서 SQL 데이터베이스에 연결하려면 데이터베이스/SQL 패키지와 특정 데이터베이스 드라이버를 사용해야합니다. 1. 데이터베이스/SQL 패키지 및 드라이버 가져 오기 (예 : github.com/go-sql-driver/mysql)는 드라이버가 초기화에만 사용된다는 것을 나타 내기 전에 강조합니다. 2. SQL.Open ( "MySQL", "사용자 : Password@TCP (LocalHost : 3306)/dbname")를 사용하여 데이터베이스 핸들을 작성하고 DB.ping ()을 호출하여 연결을 확인합니다. 3. db.query ()를 사용하여 쿼리를 실행하고 db.exec ()를 실행하려면
