Implementasi GraphQL untuk mengekspos sumber daya overflow stack secara efisien (komentar, posting, jawaban, suara, dll)
Stack Exchange tidak memiliki titik akhir GraphQL jadi saya membuatnya. API langsung di atas dalam mode POC untuk saat ini karena skema dibangun. Saat ini melayani konten dari https://health.stackexchange.com/ dan diperbarui setiap minggu dengan lebih banyak yang akan datang karena pipa & infra ditingkatkan & dibangun. Harapkan jumlah latensi minimal karena ini saat ini di-host dalam layanan aplikasi, yang akan turun selama periode penggunaan rendah. Jika ini terjadi, harap bersabar dan taman bermain/permintaan harus datang setelah 'bangun' pertama. Jika ini mendapat traksi, ketersediaan akan ditingkatkan.
Untuk berjalan secara lokal:
docker-compose up
dan kunjungi http: // localhost: 8080 untuk mulai menggunakan taman bermain atau mencapai titik akhir dengan beberapa pertanyaan! Misalnya, untuk mendapatkan informasi tentang halaman Q&A skor tertinggi di sub-komunitas:
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
}
}
}
}
}
}
Server juga tersedia sebagai wadah Docker asalkan ada backend terpisah:
docker run -e SERVER='<dbhost>' -e UNAME='<dbUname>' -e PASS='<dbPass>' snimmagadda/stack-exchange-graphql-server:latest
atau untuk lari dari sumber:
go run cmd/server.goBeberapa variabel lingkungan harus diatur untuk berjalan secara lokal
| Kunci | Jenis | Keterangan | Contoh |
|---|---|---|---|
SERVER | Rangkaian | Host DB | localhost |
SCHEMA | Rangkaian | Skema DB Aplikasi | Stacke |
UNAME | Rangkaian | APP DB USERNAME CRED | appuser |
PASS | Rangkaian | Aplikasi DB Kredo Kata Sandi | SuperSecret123 |
SERVER harus menjadi nama host dari DB MySQL. Untuk melayani konten, server GraphQL mengharapkan skema stacke yang berpenduduk.
Todo: Params yang dapat dikonfigurasi ...
go build cmd/server.goOpsi untuk pengembangan mudah fleksibel dengan rute yang lebih ramping yang akan datang ... untuk saat ini berikut ini tersedia:
Jalankan backend hanya dengan Docker (atau Tweak & Gunakan 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
~ Baris 1K ada di sini akan digunakan sebagai sisipan untuk skema Anda.
Buat (atau salin) file .env dengan variabel dalam tabel di atas diatur untuk mengkonfigurasi server graphql lokal.
Mulai server:
go run cmd/server.go
TODO Saya mungkin akan melakukan penyempurnaan dan bertukar ke sesuatu seperti backend elastis tetapi untuk saat ini inilah pengaturan awal. XML Dumps yang diterbitkan oleh Stack Exchange diimpor ke backend relasional yang diindeks menggunakan pekerjaan yang ditulis dengan Spring Batch pada jadwal. Server GraphQL dibaca dari backend ini untuk mengekspos data Exchange Stack. 
? Sai Nimmagadda
Proyek ini saat ini dalam mode build. Kontribusi, masalah, dan permintaan fitur dipersilakan!
Jangan ragu untuk memeriksa halaman masalah.
Berikan ️ jika proyek ini membantu Anda!
Hak Cipta © 2020 Sai Nimmagadda.
Proyek ini berlisensi MIT.
Readme ini dihasilkan dengan ❤️ oleh readme-md-generator