Se han eliminado los proyectos de Appveyor, ya que este proyecto ahora usa Docker y las imágenes de Docker elegidas están basadas en Linux (por razones de tamaño y velocidad)
Si ha encontrado útil este proyecto, ya sea como una biblioteca que usa o como herramienta de aprendizaje, considere comprarme un café:
Para construir y ejecutar la imagen Docker, use los siguientes comandos:
docker build . -t dwcheckapidocker run -p 8080:5000 dwcheckapiEsto ejecutará la última compilación de la imagen de Docker y expondrá la aplicación en http: // localhost: 8080/swagger.
Este proyecto es una API web implementada .NET Core para enumerar todas las novelas (Canon) Discworld.
Utiliza Entity Framework Core para comunicarse con una base de datos SQLite, que contiene un registro para cada una de las novelas de Discworld.
Se ha lanzado, como es, utilizando una licencia MIT. Para obtener más información sobre la licencia MIT, consulte el archivo LICENSE en la raíz del repositorio o consulte la página legal de TL; DR para MIT
Dwcheckapi tiene un código de conducta al que todos los contribuyentes, mantenedores y carcasa deben adherirse. Al contribuir, mantener, bifurcar o de cualquier otra manera cambiar el código presentado en este repositorio, todos los usuarios deben aceptar este código de conducta.
Consulte Code of Conduct.md para más detalles.
Las solicitudes de extracción son bienvenidas, pero tómese un momento para leer el código de conducta antes de enviarlas o comentar cualquier trabajo en este repositorio.
Esto deberá perforarse antes de ejecutar la aplicación por primera vez.
Cambiar al directorio de persistencia (es decir, dwCheckApi/dwCheckApi.Persistence )
cd dwCheckApi.Persistence
Emitir el comando Entity Framework para actualizar la base de datos
dotnet ef database update
Esto asegurará que todas las migraciones se utilicen para crear o alterar la instancia de la base de datos local, lista para la siembra (consulte Seeding the Database )
Cambiar al directorio API (es decir, dwCheckApi/dwCheckApi )
cd dwCheckApi
Emitir el comando dotnet Restaure (esto resuelve todos los paquetes Nuget)
dotnet restore
Emitir el comando de compilación de dotnet
dotnet build
Emitir el comando dotnet ejecutado
dotnet run
Esto iniciará el servidor web de Kestrel, cargará la aplicación dwCheckApi y le dirá, a través del terminal, cuál será la URL para acceder dwCheckApi . Por lo general, esto será http://localhost:5000 , pero puede ser diferente según la configuración de su sistema.
Hay una serie de puntos finales de API relacionados con la limpieza y la siembra de la base de datos. Estos se pueden encontrar en:
/Database/DropData
/Database/SeedData
Estos dos comandos (utilizados entre sí) eliminarán todos los datos de la base de datos, luego sembrarán la base de datos (respectivamente) de una serie de archivos JSON que se pueden encontrar en el directorio SeedData .
dwCheckApi ha sido diseñado para que el usuario pueda agregar tantos datos como desee a través de los archivos JSON. Esto significa que dwCheckApi no se limita a las novelas y personajes de Discworld.
Un usuario de esta API podría alterar los archivos JSON, soltar los datos y la resolución y tener un conjunto de datos completamente diferente, tal vez novelas de Stephen King, por ejemplo.
Este repositorio contiene una biblioteca de prueba XUnit.net. Para ejecutar las pruebas:
Cambiar directorio al directorio de pruebas
cd dwCheckApi.Tests
Emitir el comando dotnet Restaure (esto resuelve todos los paquetes Nuget)
dotnet restore
Emitir el comando xunit
dotnet xunit
Todas las pruebas se ejecutarán contra una nueva compilación de dwCheckApi y los resultados se devolverán en la ventana Abrir shell/solicitante del sistema.
dwCheckApi tiene los siguientes controladores:
Libros
El controlador Books tiene dos métodos:
Conseguir
La acción Get toma una identificación entera. Este campo representa el Ordinal para la novela. Este ordinal se basa en el orden de lanzamiento, por lo que si el usuario desea datos en 'Night Watch', establecería una solicitud de Obtener para:
/Books/Get/29
Esto devolverá los siguientes datos 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"
]
}
Buscar
La acción Search toma un parámetro de cadena llamado searchString . dwCheckApi buscará los siguientes campos de todos los registros de libros y regresará una vez que tenga coincidencias:
Si el usuario desea buscar el "rincewind" PRASE, entonces debe emitir la siguiente solicitud:
/Books/Search?searchString=Rincewind
Esto devolverá los siguientes datos 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" : []
}
]
Personajes
El controlador Characters tiene dos métodos:
La acción Get toma una identificación entera. Este campo representa la ID de la entrada de caracteres en la base de datos. No se recomienda que un consumidor de esta API use este método del controlador, ya que la entrada de ID se basa completamente en el orden en que el núcleo del marco de la entidad persiste las entradas a la base de datos mientras crea el conjunto de datos, y esto es impredecible. Se incluye aquí para completar, y probablemente se eliminará en una versión posterior.
Este ordinal se basa en el orden de lanzamiento, por lo que si el usuario desea datos en 'Night Watch', establecería una solicitud de Obtener para:
/Characters/Get/4
Esto devolverá los datos JSON similares a este (ver arriba de por qué la entidad de caracteres específica puede no ser la misma cuando se ejecuta en una base de datos recién creada):
{
"characterName":"The Luggage",
"books":
[
"The Colour of Magic"
]
}
La acción Search toma un parámetro de cadena llamado searchString . dwCheckApi buscará los nombres de todos los registros de personajes y devolverá los que coinciden.
Si el usuario desea buscar el "RI" PRASE, entonces debe emitir la siguiente solicitud:
/Characters/Search?searchString=ri
Esto devolverá los siguientes datos JSON:
[
{
"characterName":"Ridcully",
"books":
[
"The Colour of Magic"
]
},
{
"characterName":"Rincewind",
"books":
[
"The Colour of Magic"
]
}
]
El Wiki L-Space se está utilizando actualmente para sembrar la base de datos.
Todos los datos de carácter y libros tienen derechos de autor para Terry Pratchett y/o editores de Transworld No se pretendía infracción.
En el directorio de SeedData, hay una colección de archivos JSON. La fuente de datos para estos archivos es una combinación de la wiki del espacio L (mencionado anteriormente) y su conocimiento propio de la serie Discworld.
No he alterado ningún dato de la wiki del espacio L de ninguna manera al transformarlo en los archivos JSON. Como tal, la licencia Wiki L-Space (que es una licencia Creative Commons Attribution Sharealike 3.0) todavía se aplica.
Para obtener más información sobre la licencia utilizada por el Wiki de L-Space, consulte el archivo Data License.md .