โครงการ Appveyor ได้ถูกลบออกเนื่องจากโครงการนี้ใช้ Docker และรูปภาพ Docker ที่เลือกนั้นใช้ Linux (สำหรับเหตุผลขนาดและความเร็ว)
หากคุณพบว่าโครงการนี้มีประโยชน์ไม่ว่าจะเป็นห้องสมุดที่คุณใช้หรือเป็นเครื่องมือการเรียนรู้โปรดพิจารณาซื้อกาแฟให้ฉัน:
ในการสร้างและเรียกใช้อิมเมจนักเทียบท่าให้ใช้คำสั่งต่อไปนี้:
docker build . -t dwcheckapidocker run -p 8080:5000 dwcheckapiสิ่งนี้จะเรียกใช้บิลด์ล่าสุดของอิมเมจนักเทียบท่าและเปิดเผยแอปพลิเคชันที่ http: // localhost: 8080/swagger
โครงการนี้เป็น Web API ที่ใช้งาน. NET Core สำหรับแสดงรายการนวนิยาย Discworld (Canon) ทั้งหมด
มันใช้ Entity Framework Core เพื่อสื่อสารกับฐานข้อมูล SQLite ซึ่งมีบันทึกสำหรับนวนิยาย Discworld แต่ละเล่ม
มันได้รับการปล่อยตัวตามที่เป็นอยู่โดยใช้ใบอนุญาต MIT สำหรับข้อมูลเพิ่มเติมเกี่ยวกับใบอนุญาต MIT โปรดดูไฟล์ LICENSE ในรูทของที่เก็บหรือดูหน้ากฎหมาย TL; DR ตามกฎหมายสำหรับ MIT
Dwcheckapi มีจรรยาบรรณที่ผู้มีส่วนร่วมผู้ดูแลและผู้คิดจะต้องปฏิบัติตาม เมื่อมีส่วนร่วมการบำรุงรักษาฟอร์กหรือในทางอื่น ๆ การเปลี่ยนรหัสที่นำเสนอในที่เก็บนี้ผู้ใช้ทุกคนจะต้องเห็นด้วยกับจรรยาบรรณนี้
ดู Code of Conduct.md สำหรับรายละเอียด
ยินดีต้อนรับคำขอดึง แต่โปรดใช้เวลาสักครู่ในการอ่านจรรยาบรรณก่อนที่จะส่งหรือแสดงความคิดเห็นเกี่ยวกับงานใด ๆ ใน repo นี้
สิ่งนี้จะต้องมีการเจาะก่อนที่จะเรียกใช้แอปพลิเคชันเป็นครั้งแรก
เปลี่ยนเป็นไดเรกทอรีการคงอยู่ (เช่น dwCheckApi/dwCheckApi.Persistence )
cd dwCheckApi.Persistence
ออกคำสั่ง Entity Framework เพื่ออัปเดตฐานข้อมูล
dotnet ef database update
สิ่งนี้จะช่วยให้มั่นใจได้ว่าการอพยพทั้งหมดจะใช้ในการสร้างหรือเปลี่ยนแปลงอินสแตนซ์ฐานข้อมูลท้องถิ่นพร้อมสำหรับการเพาะ (ดู Seeding the Database )
เปลี่ยนเป็นไดเรกทอรี API (เช่น dwCheckApi/dwCheckApi )
cd dwCheckApi
ออกคำสั่ง dotnet Restore (สิ่งนี้แก้ไขแพ็คเกจ NUGET ทั้งหมด)
dotnet restore
ออกคำสั่ง dotnet build
dotnet build
ออกคำสั่ง dotnet run
dotnet run
สิ่งนี้จะเริ่มต้นเว็บไซต์ Kestrel โหลดแอปพลิเคชัน dwCheckApi และบอกคุณผ่านเทอร์มินัลสิ่งที่ URL เพื่อเข้าถึง dwCheckApi จะเป็นอย่างไร โดยปกติจะเป็น http://localhost:5000 แต่อาจแตกต่างกันตามการกำหนดค่าระบบของคุณ
มีชุดของจุดสิ้นสุด API ที่เกี่ยวข้องกับการล้างและการเพาะฐานข้อมูล สามารถพบได้ที่:
/Database/DropData
/Database/SeedData
คำสั่งทั้งสองนี้ (ใช้ร่วมกัน) จะวางข้อมูลทั้งหมดจากฐานข้อมูลจากนั้นทำการเพาะฐานข้อมูล (ตามลำดับ) จากชุดไฟล์ JSON ที่สามารถพบได้ในไดเรกทอรี SeedData
dwCheckApi ได้รับการออกแบบเพื่อให้ผู้ใช้สามารถเพิ่มข้อมูลได้มากเท่าที่พวกเขาต้องการผ่านไฟล์ JSON ซึ่งหมายความว่า dwCheckApi ไม่ จำกัด เฉพาะนวนิยายและตัวละคร Discworld
ผู้ใช้ API นี้สามารถเปลี่ยนไฟล์ JSON วางข้อมูลและ reseed และมีชุดข้อมูลที่แตกต่างอย่างสิ้นเชิง - อาจเป็นนวนิยายสตีเฟ่นคิง
ที่เก็บนี้มีไลบรารีการทดสอบ XUNIT.NET เพื่อเรียกใช้การทดสอบ:
เปลี่ยนไดเรกทอรีเป็นไดเรกทอรีการทดสอบ
cd dwCheckApi.Tests
ออกคำสั่ง dotnet Restore (สิ่งนี้แก้ไขแพ็คเกจ NUGET ทั้งหมด)
dotnet restore
ออกคำสั่ง xunit
dotnet xunit
การทดสอบทั้งหมดจะถูกเรียกใช้กับบิลด์ใหม่ของ dwCheckApi และผลลัพธ์จะถูกส่งกลับในหน้าต่างพรอมต์เชลล์/คำสั่งเปิด
dwCheckApi มีตัวควบคุมต่อไปนี้:
หนังสือ
ตัวควบคุม Books มีสองวิธี:
รับ
การดำเนินการ Get ใช้ ID จำนวนเต็ม ฟิลด์นี้แสดงถึงลำดับสำหรับนวนิยาย ลำดับนี้ขึ้นอยู่กับลำดับการเปิดตัวดังนั้นหากผู้ใช้ต้องการข้อมูลใน 'Night Watch' พวกเขาจะตั้งค่าการร้องขอรับ:
/Books/Get/29
สิ่งนี้จะส่งคืนข้อมูล JSON ต่อไปนี้:
{
"bookOrdinal":29,
"bookName":"Night Watch",
"bookIsbn10":"0552148997",
"bookIsbn13":"9780552148993",
"bookDescription":"This morning, Commander Vimes of the City Watch had it all. He was a Duke. He was rich. He was respected. He had a titanium cigar case. He was about to become a father. This morning he thought longingly about the good old days. Tonight, he's in them.",
"bookCoverImage":null,
"bookCoverImageUrl":"http://wiki.lspace.org/mediawiki/images/4/4f/Cover_Night_Watch.jpg",
"characters" :
[
"Fred Colon",
"Nobby Nobbs",
"Rosie Palm",
"Samuel Vimes",
"The Patrician"
]
}
ค้นหา
การดำเนิน Search ใช้พารามิเตอร์สตริงที่เรียกว่า searchString dwCheckApi จะค้นหาฟิลด์ต่อไปนี้ของบันทึกหนังสือทั้งหมดและส่งคืนหนึ่งครั้งซึ่งมีการแข่งขันใด ๆ :
หากผู้ใช้ต้องการค้นหาคำว่า "Rincewind" พวกเขาควรออกคำขอต่อไปนี้:
/Books/Search?searchString=Rincewind
สิ่งนี้จะส่งคืนข้อมูล JSON ต่อไปนี้:
[
{
"bookId":23,
"bookOrdinal":2,
"bookName":"The Light Fantastic",
"bookIsbn10":"0861402030",
"bookIsbn13":"9780747530794",
"bookDescription":"As it moves towards a seemingly inevitable collision with a malevolent red star, the Discworld has only one possible saviour. Unfortunately, this happens to be the singularly inept and cowardly wizard called Rincewind, who was last seen falling off the edge of the world ....",
"bookCoverImage":null,
"bookCoverImageUrl":"http://wiki.lspace.org/mediawiki/images/f/f1/Cover_The_Light_Fantastic.jpg",
"characters":
[
"The Lady",
"Rincewind",
"The Partician",
"The Luggage",
"Blind Io",
"Fate",
"Death",
"Twoflower",
"Offler",
"Ridcully"
]
},
{
"bookId":30,
"bookOrdinal":9,
"bookName":"Eric",
"bookIsbn10":"0575046368",
"bookIsbn13":"9780575046368",
"bookDescription":"Eric is the Discworld's only demonology hacker. Pity he's not very good at it. All he wants is three wishes granted. Nothing fancy - to be immortal, rule the world, have the most beautiful woman in the world fall madly in love with him, the usual stuff. But instead of a tractable demon, he calls up Rincewind, probably the most incompetent wizard in the universe, and the extremely intractable and hostile form of travel accessory known as the Luggage. With them on his side, Eric's in for a ride through space and time that is bound to make him wish (quite fervently) again - this time that he'd never been born.",
"bookCoverImage":null,
"bookCoverImageUrl":"http://wiki.lspace.org/mediawiki/images/2/27/Cover_Eric_%28alt%29.jpg",
"characters" : []
},
{
"bookId":38,
"bookOrdinal":17,
"bookName":"Interesting Times",
"bookIsbn10":"0552142352",
"bookIsbn13":"9780552142359",
"bookDescription":"Mighty Battles! Revolution! Death! War! (and his sons Terror and Panic, and daughter Clancy). The oldest and most inscrutable empire on the Discworld is in turmoil, brought about by the revolutionary treatise What I Did On My Holidays. Workers are uniting, with nothing to lose but their water buffaloes. Warlords are struggling for power. War (and Clancy) are spreading through the ancient cities. And all that stands in the way of terrible doom for everyone is: Rincewind the Wizzard, who can't even spell the word 'wizard' ... Cohen the barbarian hero, five foot tall in his surgical sandals, who has had a lifetime's experience of not dying ...and a very special butterfly.",
"bookCoverImage":null,
"bookCoverImageUrl":"http://wiki.lspace.org/mediawiki/images/9/96/Cover_Interesting_Times.jpg",
"characters" : []
}
]
ตัวละคร
ตัวควบคุม Characters มีสองวิธี:
การดำเนินการ Get ใช้ ID จำนวนเต็ม ฟิลด์นี้แสดงถึง ID ของรายการอักขระในฐานข้อมูล ไม่แนะนำให้ผู้บริโภคของ API นี้ใช้วิธีคอนโทรลเลอร์นี้เนื่องจากรายการ ID นั้นขึ้นอยู่กับลำดับที่ Core Entity Framework ยังคงมีรายการไปยังฐานข้อมูลในขณะที่สร้างชุดข้อมูลและนี่เป็นสิ่งที่คาดเดาไม่ได้ มันรวมอยู่ที่นี่เพื่อความสมบูรณ์และอาจจะถูกลบออกในเวอร์ชันภายหลัง
ลำดับนี้ขึ้นอยู่กับลำดับการเปิดตัวดังนั้นหากผู้ใช้ต้องการข้อมูลใน 'Night Watch' พวกเขาจะตั้งค่าการร้องขอรับ:
/Characters/Get/4
สิ่งนี้จะส่งคืนข้อมูล JSON คล้ายกับข้อมูลนี้ (ดูด้านบนว่าทำไมเอนทิตีอักขระเฉพาะอาจไม่เหมือนกันเมื่อทำงานบนฐานข้อมูลที่สร้างขึ้นใหม่):
{
"characterName":"The Luggage",
"books":
[
"The Colour of Magic"
]
}
การดำเนิน Search ใช้พารามิเตอร์สตริงที่เรียกว่า searchString dwCheckApi จะค้นหาชื่อของบันทึกตัวละครทั้งหมดและส่งคืนที่ตรงกัน
หากผู้ใช้ต้องการค้นหาคำว่า "RI" พวกเขาควรออกคำขอต่อไปนี้:
/Characters/Search?searchString=ri
สิ่งนี้จะส่งคืนข้อมูล JSON ต่อไปนี้:
[
{
"characterName":"Ridcully",
"books":
[
"The Colour of Magic"
]
},
{
"characterName":"Rincewind",
"books":
[
"The Colour of Magic"
]
}
]
ขณะนี้วิกิ L-space กำลังถูกใช้เพื่อเพาะเมล็ดฐานข้อมูล
ข้อมูลตัวละครและหนังสือทั้งหมดมีลิขสิทธิ์สำหรับ Terry Pratchett และ/หรือ Transworld Publishers ไม่มีการละเมิด
ในไดเรกทอรี seeddata มีคอลเลกชันของไฟล์ JSON แหล่งข้อมูลสำหรับไฟล์เหล่านี้เป็นการรวมกันของวิกิ L-space (ดังกล่าวข้างต้น) และความรู้ของตัวเองเกี่ยวกับซีรี่ส์ Discworld
ฉันไม่ได้เปลี่ยนแปลงข้อมูลใด ๆ จากวิกิ L-space แต่อย่างใดเมื่อแปลงเป็นไฟล์ JSON ดังนั้นใบอนุญาต L-Space Wiki (ซึ่งเป็นใบอนุญาต Creative Commons ที่มาของ ShareAlike 3.0) ยังคงใช้งานอยู่
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับใบอนุญาตที่ใช้โดย L-Space Wiki โปรดดูไฟล์ Data License.md