تمت إزالة مشاريع Appveyor ، حيث يستخدم هذا المشروع الآن Docker وصور Docker المختارة تعتمد على Linux (لأسباب الحجم والسرعة)
إذا وجدت هذا المشروع مفيدًا ، إما كمكتبة تستخدمها أو كأداة تعليمية ، فيرجى التفكير في شراء قهوة:
لبناء وتشغيل صورة Docker ، استخدم الأوامر التالية:
docker build . -t dwcheckapidocker run -p 8080:5000 dwcheckapiسيؤدي ذلك إلى تشغيل أحدث بناء لصورة Docker وفضح التطبيق على http: // localhost: 8080/swagger.
هذا المشروع عبارة عن واجهة برمجة تطبيقات Web Core التي تم تنفيذها لإدراج جميع روايات Discworld (Canon).
ويستخدم Creytity Framework Core للتواصل مع قاعدة بيانات SQLite ، والتي تحتوي على سجل لكل من روايات Discworld.
تم إصداره ، كما هو الحال ، باستخدام ترخيص معهد ماساتشوستس للتكنولوجيا. لمزيد من المعلومات حول ترخيص معهد ماساتشوستس للتكنولوجيا LICENSE يرجى الاطلاع
لدى Dwcheckapi مدونة سلوك يجب على جميع المساهمين والمحافظة والشرائين الالتزام بها. عند المساهمة أو المحافظة أو التقدم أو في أي طريقة أخرى تغيير الرمز المقدم في هذا المستودع ، يجب على جميع المستخدمين الموافقة على مدونة قواعد السلوك هذه.
انظر Code of Conduct.md للحصول على التفاصيل.
نرحب بطلبات السحب ، ولكن يرجى أخذ لحظة لقراءة مدونة السلوك قبل إرسالها أو التعليق على أي عمل في هذا الريبو.
سيحتاج هذا إلى التمييز قبل تشغيل الطلب لأول مرة
تغيير إلى دليل الثبات (أي dwCheckApi/dwCheckApi.Persistence )
cd dwCheckApi.Persistence
إصدار أمر إطار الكيان لتحديث قاعدة البيانات
dotnet ef database update
سيضمن ذلك استخدام جميع الترحيل لإنشاء أو تغيير مثيل قاعدة البيانات المحلية ، جاهزة للبذر (انظر Seeding the Database )
تغيير إلى دليل API (أي dwCheckApi/dwCheckApi )
cd dwCheckApi
إصدار أمر dotnet Restore (هذا يحل جميع حزم nuget)
dotnet restore
إصدار أمر بناء dotnet
dotnet build
إصدار أمر dotnet Run
dotnet run
سيؤدي ذلك إلى بدء خادم الويب Kestrel ، وتحميل تطبيق dwCheckApi ويخبرك ، عبر المحطة ، ما هو عنوان URL للوصول إلى dwCheckApi . عادةً ما يكون هذا http://localhost:5000 ، ولكن قد يكون مختلفًا استنادًا إلى تكوين النظام الخاص بك.
هناك سلسلة من نقاط نهاية واجهة برمجة التطبيقات المتعلقة بمسح قاعدة البيانات وبذرها. يمكن العثور عليها في:
/Database/DropData
/Database/SeedData
سيسقط هذان الأمران (المستخدمان بالاقتران مع بعضهما البعض) جميع البيانات من قاعدة البيانات ، ثم بذرة قاعدة البيانات (على التوالي) من سلسلة من ملفات JSON التي يمكن العثور عليها في دليل SeedData .
تم تصميم dwCheckApi بحيث يمكن للمستخدم إضافة أكبر قدر من البيانات التي تريدها عبر ملفات JSON. هذا يعني أن dwCheckApi لا يقتصر على روايات وشخصيات Discworld.
يمكن لمستخدم واجهة برمجة التطبيقات هذه تغيير ملفات JSON وإسقاط البيانات وإعادة البيع ولديها مجموعة بيانات مختلفة تمامًا - ربما روايات ستيفن كينج ، على سبيل المثال.
يحتوي هذا المستودع على مكتبة اختبار Xunit.net. لتشغيل الاختبارات:
تغيير الدليل إلى دليل الاختبارات
cd dwCheckApi.Tests
إصدار أمر dotnet Restore (هذا يحل جميع حزم nuget)
dotnet restore
إصدار أمر xunit
dotnet xunit
سيتم إجراء جميع الاختبارات مقابل بناء جديد من dwCheckApi وسيتم إرجاع النتائج في نافذة موجه المفتوح/الأوامر.
يحتوي dwCheckApi على وحدات التحكم التالية:
كتب
يحتوي وحدة تحكم Books على طريقتان:
يحصل
يأخذ الإجراء Get على معرف عدد صحيح. يمثل هذا المجال الترتيبي للرواية. يعتمد هذا الترتيب على ترتيب الإصدار ، لذلك إذا أراد المستخدم بيانات عن "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 في الحقول التالية لجميع سجلات الكتب والعودة مرة واحدة والتي لديها أي مطابقات:
إذا كان المستخدم يرغب في البحث عن Prase "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 على معرف عدد صحيح. يمثل هذا الحقل معرف إدخال الأحرف في قاعدة البيانات. لا ينصح بأن يستخدم المستهلك في API طريقة وحدة التحكم هذه ، حيث يعتمد إدخال المعرف بالكامل على الترتيب الذي يستمر به Contity Framework Core على الإدخالات في قاعدة البيانات أثناء إنشاء مجموعة البيانات ، وهذا لا يمكن التنبؤ به. يتم تضمينه هنا للاكتمال ، وربما سيتم إزالته في إصدار لاحق.
يعتمد هذا الترتيب على ترتيب الإصدار ، لذلك إذا أراد المستخدم بيانات عن "Night Watch" ، فسيقومون بتعيين طلب الحصول على:
/Characters/Get/4
سيؤدي ذلك إلى إرجاع بيانات JSON مماثلة لهذا التصنيف (انظر أعلاه لسبب عدم وجود كيان حرف معين عند التشغيل على قاعدة بيانات تم إنشاؤه حديثًا):
{
"characterName":"The Luggage",
"books":
[
"The Colour of Magic"
]
}
يأخذ إجراء Search معلمة سلسلة تسمى searchString . سوف يبحث dwCheckApi في أسماء جميع سجلات الأحرف ، وإرجاع تلك التي تتطابق.
إذا كان المستخدم يرغب في البحث عن Prase "RI" ، فيجب عليهم إصدار الطلب التالي:
/Characters/Search?searchString=ri
سيؤدي هذا إلى إرجاع بيانات JSON التالية:
[
{
"characterName":"Ridcully",
"books":
[
"The Colour of Magic"
]
},
{
"characterName":"Rincewind",
"books":
[
"The Colour of Magic"
]
}
]
يتم استخدام Wiki L-Space حاليًا لبذرة قاعدة البيانات.
جميع بيانات الشخصيات والكتب محمية بحقوق الطبع والنشر ل Terry Pratchett و/أو ناشري Transworld لم يكن المقصود من أي انتهاك.
في دليل SeedData ، هناك مجموعة من ملفات JSON. مصدر البيانات لهذه الملفات هو مزيج من Wiki L-Space (المذكورة أعلاه) ومعرفة Y الخاصة بسلسلة Discworld.
لم أقم بتغيير أي بيانات من Wiki L-Space بأي شكل من الأشكال عند تحويلها إلى ملفات JSON. على هذا النحو ، فإن ترخيص Wiki L-Space (وهو ترخيص Creative Commons Attribution ShareAlike 3.0) لا يزال يتم تطبيقه.
لمزيد من المعلومات حول الترخيص المستخدم من قبل W-Space Wiki ، يرجى الاطلاع على ملف Data License.md .