การใช้งาน GraphQL เพื่อเปิดเผยทรัพยากรสแต็กล้นอย่างมีประสิทธิภาพ (ความคิดเห็นโพสต์คำตอบการโหวต ฯลฯ )
การแลกเปลี่ยนสแต็กไม่มีจุดสิ้นสุดของ GraphQL ดังนั้นฉันจึงทำ Live API ด้านบนอยู่ในโหมด POC ในตอนนี้เนื่องจาก Schema ถูกสร้างขึ้น ขณะนี้กำลังให้บริการเนื้อหาจาก https://health.stackexchange.com/ และได้รับการปรับปรุงทุกสัปดาห์โดยมีอีกมากที่จะมาเป็น Pipeline & Infra ได้รับการสร้างขึ้นและสร้างขึ้น คาดว่าจะมีจำนวนแฝงน้อยที่สุดเนื่องจากปัจจุบันโฮสต์ในบริการแอพซึ่งจะหมุนลงในช่วงระยะเวลาการใช้งานต่ำ หากสิ่งนี้เกิดขึ้นโปรดอดทนรอและสนามเด็กเล่น/คำขอควรจะเกิดขึ้นหลังจาก 'ปลุก' ครั้งแรก หากสิ่งนี้ได้รับแรงฉุดความพร้อมใช้งานจะเพิ่มขึ้น
เพื่อทำงานในพื้นที่:
docker-compose up
และเยี่ยมชม http: // localhost: 8080 เพื่อเริ่มใช้สนามเด็กเล่นหรือกดจุดสิ้นสุดด้วยคำถามบางอย่าง! ตัวอย่างเช่นเพื่อรับข้อมูลเกี่ยวกับหน้าถามและตอบที่ให้คะแนนสูงสุดในชุมชนย่อย:
query postsPagination {
allPostsCursor(first: 10, where: { order: { field: votes, order: DESC } }) {
pageInfo {
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
score
title
body
comments {
userId
text
}
answers {
score
body
comments {
userDisplayName
text
}
}
}
}
}
}
เซิร์ฟเวอร์ยังมีอยู่เป็นคอนเทนเนอร์ Docker หากมีแบ็กเอนด์แยกต่างหากอยู่:
docker run -e SERVER='<dbhost>' -e UNAME='<dbUname>' -e PASS='<dbPass>' snimmagadda/stack-exchange-graphql-server:latest
หรือเรียกใช้จากแหล่งที่มา:
go run cmd/server.goต้องตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างให้ทำงานในพื้นที่
| สำคัญ | พิมพ์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
SERVER | สาย | โฮสต์ฐานข้อมูล | สถานที่ตั้งของท้องถิ่น |
SCHEMA | สาย | แอพ DB Schema | สตาคกี้ |
UNAME | สาย | แอพ DB ชื่อผู้ใช้ | ผู้ใช้ |
PASS | สาย | แอพ DB รหัสผ่านเครดิต | Supersecret123 |
SERVER ควรเป็นชื่อโฮสต์ของ MySQL DB เพื่อให้บริการเนื้อหาเซิร์ฟเวอร์ GraphQL คาดว่าจะมีสคีมา stacke ที่มีประชากร
TODO: พารามิเตอร์ที่กำหนดค่าได้ ...
go build cmd/server.goตัวเลือกสำหรับการพัฒนามีความยืดหยุ่นพร้อมเส้นทางที่มีความคล่องตัวมากขึ้นที่จะมาถึง ... สำหรับตอนนี้มีต่อไปนี้:
เรียกใช้แบ็กเอนด์เท่านั้นด้วย Docker (หรือ tweak & ใช้ docker-compose.yml )
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_ROOT_USER=root -e MYSQL_PASSWORD=password -d -p 3306:3306 mysql:5.7.26
~ 1k แถวที่นี่จะถูกใช้เป็นส่วนแทรกไปยังสคีมาของคุณ
สร้าง (หรือคัดลอก) ไฟล์. env ที่มีตัวแปรในตารางด้านบนตั้งค่าเพื่อกำหนดค่าเซิร์ฟเวอร์ graphql local
เริ่มต้นเซิร์ฟเวอร์:
go run cmd/server.go
TODO ฉันอาจจะทำการปรับแต่งและแลกเปลี่ยนเป็นแบ็กเอนด์ที่ยืดหยุ่น แต่ตอนนี้นี่คือการตั้งค่าก่อน XML Dumps เผยแพร่โดย Stack Exchange จะถูกนำเข้าสู่แบ็กเอนด์เชิงสัมพันธ์ที่จัดทำดัชนีโดยใช้งานที่เขียนด้วยชุดฤดูใบไม้ผลิตามกำหนดเวลา เซิร์ฟเวอร์ GraphQL อ่านจากแบ็กเอนด์นี้เพื่อเปิดเผยข้อมูลการแลกเปลี่ยนสแต็ก 
- Sai Nimmagadda
โครงการนี้อยู่ในโหมด Build ยินดีต้อนรับการมีส่วนร่วมปัญหาและคำขอคุณสมบัติ!
อย่าลังเลที่จะตรวจสอบหน้าปัญหา
ให้️ถ้าโครงการนี้ช่วยคุณได้!
ลิขสิทธิ์© 2020 Sai Nimmagadda
โครงการนี้ได้รับใบอนุญาต MIT
readme นี้ถูกสร้างขึ้นด้วย❤โดย readme-md-generator