Les projets d'approveyor ont été supprimés, car ce projet utilise désormais Docker et les images Docker choisies sont basées sur Linux (pour des raisons de taille et de vitesse)
Si vous avez trouvé ce projet utile, soit en tant que bibliothèque que vous utilisez ou comme outil d'apprentissage, envisagez de m'acheter un café:
Pour construire et exécuter l'image Docker, utilisez les commandes suivantes:
docker build . -t dwcheckapidocker run -p 8080:5000 dwcheckapiCela exécutera la dernière version de l'image Docker et exposera l'application sur http: // localhost: 8080 / swagger.
Ce projet est une API Web implémentée .NET Core pour répertorier tous les romans (Canon) Discworld.
Il utilise l'entité Framework Core pour communiquer avec une base de données SQLite, qui contient un enregistrement pour chacun des romans Discworld.
Il a été publié, à l'approche de l'utilisation d'une licence MIT. Pour plus d'informations sur la licence MIT, veuillez consulter le fichier LICENSE à la racine du référentiel ou consulter la page juridique TL; DR pour le MIT
Dwcheckapi a un code de conduite auquel tous les contributeurs, mainteneurs et fourchettes doivent adhérer. Lors de la contribution, du maintien, de la fourniture ou de toute autre manière de modifier le code présenté dans ce référentiel, tous les utilisateurs doivent accepter ce code de conduite.
Voir Code of Conduct.md pour plus de détails.
Les demandes de traction sont les bienvenues, mais veuillez prendre un moment pour lire le code de conduite avant de les soumettre ou de commenter tout travail dans ce dépôt.
Cela devra être permis avant d'exécuter l'application pour la première fois
Passez au répertoire de persistance (c'est-à-dire dwCheckApi/dwCheckApi.Persistence )
cd dwCheckApi.Persistence
Émettez la commande Entity Framework pour mettre à jour la base de données
dotnet ef database update
Cela garantira que toutes les migrations sont utilisées pour créer ou modifier l'instance de base de données locale, prête pour l'ensemencement (voir Seeding the Database )
Passer au répertoire API (c'est-à-dire dwCheckApi/dwCheckApi )
cd dwCheckApi
Émettez la commande dotnet restore (cela résout tous les packages NuGet)
dotnet restore
Émettre la commande dotnet build
dotnet build
Émettre la commande dotnet run
dotnet run
Cela démarrera le serveur Web Kestrel, chargera l'application dwCheckApi et vous dira, via le terminal, ce que sera l'URL pour accéder dwCheckApi . Habituellement, ce sera http://localhost:5000 , mais il peut être différent en fonction de la configuration de votre système.
Il existe une série de points de terminaison API liés à la compensation et à l'amorçage de la base de données. Ceux-ci peuvent être trouvés à:
/Database/DropData
/Database/SeedData
Ces deux commandes (utilisées en conjonction l'une avec l'autre) supprimeront toutes les données de la base de données, puis semeront la base de données (respectivement) à partir d'une série de fichiers JSON qui peuvent être trouvés dans le répertoire SeedData .
dwCheckApi a été conçu pour que l'utilisateur puisse ajouter autant de données que via les fichiers JSON. Cela signifie que dwCheckApi ne se limite pas aux romans et personnages Discworld.
Un utilisateur de cette API pourrait modifier les fichiers JSON, supprimer les données et réensemencer et avoir un ensemble de données complètement différent - peut-être les romans Stephen King, par exemple.
Ce référentiel contient une bibliothèque de test xunit.net. Pour exécuter les tests:
Changer le répertoire dans le répertoire des tests
cd dwCheckApi.Tests
Émettez la commande dotnet restore (cela résout tous les packages NuGet)
dotnet restore
Émettre la commande xunit
dotnet xunit
Tous les tests seront exécutés contre une nouvelle version de dwCheckApi et les résultats seront retournés dans la fenêtre de l'invite Shell / Command Open.
dwCheckApi a les contrôleurs suivants:
Livres
Le contrôleur Books a deux méthodes:
Obtenir
L'action Get prend un ID entier. Ce champ représente l'ordinal du roman. Cet ordinal est basé sur l'ordre de libération, donc si l'utilisateur souhaite des données sur «Night Watch», il définirait une demande de GET à:
/Books/Get/29
Cela renverra les données JSON suivantes:
{
"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"
]
}
Recherche
L'action Search prend un paramètre de chaîne appelé searchString . dwCheckApi recherchera les champs suivants de tous les enregistrements de livres et reviendra une fois qui ont des matchs:
Si l'utilisateur souhaite rechercher la prase "Rincewind", il doit émettre la demande suivante:
/Books/Search?searchString=Rincewind
Cela renverra les données JSON suivantes:
[
{
"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" : []
}
]
Personnages
Le contrôleur Characters a deux méthodes:
L'action Get prend un ID entier. Ce champ représente l'ID de l'entrée de caractère dans la base de données. Il n'est pas recommandé qu'un consommateur de cette API utilise cette méthode de contrôleur, car l'entrée d'ID s'appuie entièrement sur l'ordre dans lequel le noyau du cadre d'entité persiste les entrées de la base de données lors de la création de l'ensemble de données, et cela est imprévisible. Il est inclus ici pour l'exhaustivité et sera probablement supprimé dans une version ultérieure.
Cet ordinal est basé sur l'ordre de libération, donc si l'utilisateur souhaite des données sur «Night Watch», il définirait une demande de GET à:
/Characters/Get/4
Cela renverra des données JSON similaires à celle-ci (voir ci-dessus pour savoir pourquoi l'entité de caractère spécifique n'est peut-être pas la même lors de l'exécution d'une base de données nouvellement créée):
{
"characterName":"The Luggage",
"books":
[
"The Colour of Magic"
]
}
L'action Search prend un paramètre de chaîne appelé searchString . dwCheckApi recherchera les noms de tous les enregistrements de personnages et renverra ceux qui correspondent.
Si l'utilisateur souhaite rechercher le "RI" de la prase, il doit émettre la demande suivante:
/Characters/Search?searchString=ri
Cela renverra les données JSON suivantes:
[
{
"characterName":"Ridcully",
"books":
[
"The Colour of Magic"
]
},
{
"characterName":"Rincewind",
"books":
[
"The Colour of Magic"
]
}
]
Le wiki L-Space est actuellement utilisé pour semer la base de données.
Toutes les données de caractère et de livre sont protégées par le droit d'auteur à Terry Pratchett et / ou Transworld Publishers Aucune infraction n'a été prévue.
Dans le répertoire SeedData, il existe une collection de fichiers JSON. La source de données pour ces fichiers est une combinaison du wiki L-Space (mentionné ci-dessus) et de la propre connaissance de la série Discworld.
Je n'ai en aucune façon modifié les données du wiki de l'espace L lors de la transformation en fichiers JSON. En tant que tel, la licence Wiki L-Space (qui est une licence Creative Commons Attribution Sharike 3.0) s'applique toujours.
Pour plus d'informations sur la licence utilisée par le wiki L-Space, veuillez consulter le fichier Data License.md .