Appveyor -Projekte wurden entfernt, da dieses Projekt jetzt Docker verwendet und die ausgewählten Docker -Bilder Linux basieren (aus Größe und Geschwindigkeitsgründen)
Wenn Sie dieses Projekt als hilfreich empfunden haben, entweder als Bibliothek, die Sie verwenden oder als Lernwerkzeug, sollten Sie mir einen Kaffee kaufen:
Um das Docker -Bild zu erstellen und auszuführen, verwenden Sie die folgenden Befehle:
docker build . -t dwcheckapidocker run -p 8080:5000 dwcheckapiDadurch wird der neueste Build des Docker -Images ausgeführt und die Anwendung unter http: // localhost: 8080/Swagger enthüllt.
Dieses Projekt ist ein .NET -Kern -implementierter Web -API für die Auflistung aller (Canon-) Discworld -Romane.
Es verwendet Entity Framework Core, um mit einer SQLite -Datenbank zu kommunizieren, die einen Datensatz für jeden der Discworld -Romane enthält.
Es wurde wie es so ist, wie es ist, eine MIT -Lizenz. Weitere Informationen zur MIT -Lizenz finden Sie in der LICENSE im Root des Repositorys oder auf der TL; DR Legal -Seite für MIT
Dwcheckapi hat einen Verhaltenskodex, den alle Mitwirkenden, Betreuer und Gabel einhalten müssen. Wenn Sie den in diesem Repository dargestellten Code beigetragen, aufrechterhalten, gabeln oder auf andere Weise ändern, müssen alle Benutzer diesem Verhaltenskodex zustimmen.
Weitere Informationen finden Sie unter Code of Conduct.md .
Pull -Anfragen sind willkommen. Nehmen Sie sich jedoch einen Moment Zeit, um den Verhaltenskodex zu lesen, bevor Sie sie einreichen oder irgendeine Arbeit in diesem Repo kommentieren.
Dies muss vor dem ersten Ausführen der Anwendung erfüllt werden
Wechsel zum Persistenzverzeichnis (dh dwCheckApi/dwCheckApi.Persistence )
cd dwCheckApi.Persistence
Geben Sie den Befehl Entity Framework aus, um die Datenbank zu aktualisieren
dotnet ef database update
Dadurch wird sichergestellt, dass alle Migrationen zur Erstellung oder Änderung der lokalen Datenbankinstanz verwendet werden, die für die Aussaat bereitgestellt werden (siehe Seeding the Database ).
Wechsel zum API -Verzeichnis (dh dwCheckApi/dwCheckApi )
cd dwCheckApi
Geben Sie den Befehl dotnet restore aus (so wird alle Nuget -Pakete gelöst).
dotnet restore
Geben Sie den Befehl dotnet Build aus
dotnet build
Geben Sie den Befehl dotnet run aus
dotnet run
Dadurch wird der Kestrel -Webserver gestartet, die dwCheckApi -Anwendung geladen und Ihnen über das Terminal mitgeteilt, auf welche URL dwCheckApi soll. Normalerweise ist dies http://localhost:5000 , kann jedoch je nach Systemkonfiguration unterschiedlich sein.
Es gibt eine Reihe von API -Endpunkten, die sich auf das Löschen und Aussaat der Datenbank beziehen. Diese finden Sie unter:
/Database/DropData
/Database/SeedData
Diese beiden Befehle (in Verbindung miteinander verwendet) lassen alle Daten aus der Datenbank fallen und dann die Datenbank (jeweils) aus einer Reihe von JSON -Dateien, die im SeedData -Verzeichnis zu finden sind, aus einer Reihe von JSON -Dateien säen.
dwCheckApi wurde so gestaltet, dass der Benutzer so viele Daten hinzufügen kann, wie er über die JSON -Dateien gefällt. Dies bedeutet, dass dwCheckApi nicht auf Discworld -Romane und -Perkmale beschränkt ist.
Ein Benutzer dieser API könnte die JSON -Dateien verändern, die Daten fallen lassen und neu säumen und einen völlig anderen Datensatz haben - zum Beispiel Stephen King -Romane.
Dieses Repository enthält eine Xunit.net -Testbibliothek. Um die Tests durchzuführen:
Wechseln Sie das Verzeichnis in das Testverzeichnis
cd dwCheckApi.Tests
Geben Sie den Befehl dotnet restore aus (so wird alle Nuget -Pakete gelöst).
dotnet restore
Geben Sie den Befehl xunit aus
dotnet xunit
Alle Tests werden gegen einen neuen Build von dwCheckApi durchgeführt und die Ergebnisse werden im Fenster Open Shell/Eingabeaufforderung zurückgegeben.
dwCheckApi hat die folgenden Controller:
Bücher
Der Books Controller hat zwei Methoden:
Erhalten
Die Get -Aktion erfordert eine Ganzzahl -ID. Dieses Feld repräsentiert die Ordinal für den Roman. Diese Ordinal basiert auf der Veröffentlichungsreihenfolge. Wenn der Benutzer also Daten auf "Night Watch" wünscht, würde er eine Get -Anfrage festlegen:
/Books/Get/29
Dadurch werden die folgenden JSON -Daten zurückgegeben:
{
"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"
]
}
Suchen
Die Search nimmt einen String -Parameter mit dem Namen searchString an. dwCheckApi sucht die folgenden Felder aller Buchunterlagen und kehrt einmal zurück, die Übereinstimmungen haben:
Wenn der Benutzer nach der Praxie "RinceWind" suchen möchte, sollte er die folgende Anfrage ausstellen:
/Books/Search?searchString=Rincewind
Dadurch werden die folgenden JSON -Daten zurückgegeben:
[
{
"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" : []
}
]
Charaktere
Der Characters Controller hat zwei Methoden:
Die Get -Aktion erfordert eine Ganzzahl -ID. Dieses Feld repräsentiert die ID des Zeicheneintrags in der Datenbank. Es wird nicht empfohlen, dass ein Verbraucher dieser API diese Controller -Methode verwendet, da der ID -Eintrag vollständig auf der Reihenfolge abhängt, in der der Entitäts -Framework -Kern die Einträge in die Datenbank beibehält, während der Datensatz erstellt wird, und dies ist unvorhersehbar. Es ist hier zur Vollständigkeit enthalten und wird wahrscheinlich in einer späteren Version entfernt.
Diese Ordinal basiert auf der Veröffentlichungsreihenfolge. Wenn der Benutzer also Daten auf "Night Watch" wünscht, würde er eine Get -Anfrage festlegen:
/Characters/Get/4
Dadurch werden JSON -Daten ähnlich wie diese zurückgegeben (siehe oben, warum die spezifische Zeicheneinheit beim Ausführen einer neu erstellten Datenbank möglicherweise nicht gleich ist):
{
"characterName":"The Luggage",
"books":
[
"The Colour of Magic"
]
}
Die Search nimmt einen String -Parameter mit dem Namen searchString an. dwCheckApi sucht die Namen aller Zeichensätze und gibt diejenigen zurück, die übereinstimmen.
Wenn der Benutzer nach dem Praxy "RI" suchen möchte, sollte er die folgende Anfrage ausstellen:
/Characters/Search?searchString=ri
Dadurch werden die folgenden JSON -Daten zurückgegeben:
[
{
"characterName":"Ridcully",
"books":
[
"The Colour of Magic"
]
},
{
"characterName":"Rincewind",
"books":
[
"The Colour of Magic"
]
}
]
Das L-Space-Wiki wird derzeit verwendet, um die Datenbank zu säen.
Alle Charakter- und Buchdaten sind urheberrechtlich geschützt an Terry Pratchett und/oder Transworld Publishers. Es wurde keine Verletzung beabsichtigt.
Im Seeddata -Verzeichnis gibt es eine Sammlung von JSON -Dateien. Die Datenquelle für diese Dateien ist eine Kombination aus dem L-Space-Wiki (oben erwähnt) und Y Own-Kenntnis der Discworld-Serie.
Ich habe keine Daten aus dem L-Space-Wiki in irgendeiner Weise geändert, wenn ich sie in die JSON-Dateien umgewandelt habe. Daher gilt die L-Space-Wiki-Lizenz (eine Creative Commons Attribution Sharealike 3.0-Lizenz) weiterhin.
Weitere Informationen zur Lizenz, die vom L-Space-Wiki verwendet wird, finden Sie in der Datei Data License.md .