このプロジェクトは現在Dockerを使用しており、選択したDocker画像がLinuxベースであるため、Appveyorプロジェクトが削除されました(サイズと速度の理由で)
このプロジェクトが役立つ場合、使用するライブラリとして、または学習ツールとして役立つ場合は、コーヒーを購入することを検討してください。
Docker画像を構築および実行するには、次のコマンドを使用します。
docker build . -t dwcheckapidocker run -p 8080:5000 dwcheckapiこれにより、Docker画像の最新のビルドが実行され、http:// localhost:8080/swaggerでアプリケーションが公開されます。
このプロジェクトは、すべての(Canon)Discworld小説をリストするための.NETコア実装Web APIです。
Entity Framework Coreを使用して、各Discworld小説のレコードを含むSQLiteデータベースと通信します。
MITライセンスを使用してリリースされています。 MITライセンスの詳細については、リポジトリのルートにあるLICENSEファイルを参照するか、MITのTL; DR Legalページを参照してください。
Dwcheckapiには、すべての貢献者、メンテナー、フォーカーが遵守しなければならない行動規範があります。このリポジトリに提示されたコードを貢献、維持、フォーキング、またはその他の方法で変更する場合、すべてのユーザーがこの行動規範に同意する必要があります。
詳細については、 Code of Conduct.mdを参照してください。
プルリクエストは歓迎されますが、行為規範を読む前に、このリポジトリの作業についてコメントする前に、行動規範を読んでください。
これは、アプリケーションを初めて実行する前に完成する必要があります
Persistence Directoryに変更(すなわち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ビルドコマンドを発行します
dotnet build
dotnet runコマンドを発行します
dotnet run
これにより、Kestrel WebServerが起動し、 dwCheckApiアプリケーションをロードし、端末を介してdwCheckApiアクセスするURLが何であるかを伝えます。通常、これはhttp://localhost:5000になりますが、システム構成に基づいて異なる場合があります。
データベースのクリアとシードに関連する一連のAPIエンドポイントがあります。これらは次のように見つけることができます:
/Database/DropData
/Database/SeedData
これらの2つのコマンド(互いに組み合わせて使用)は、データベースからすべてのデータを削除し、 SeedDataディレクトリにある一連のJSONファイルから(それぞれ)データベースを(それぞれ)シードします。
dwCheckApi 、ユーザーがJSONファイルを介して好きなだけ多くのデータを追加できるように設計されています。これは、 dwCheckApi Discworldの小説やキャラクターに限定されないことを意味します。
このAPIのユーザーは、JSONファイルを変更し、データをドロップして再編成し、まったく異なるデータセット(おそらくStephen Kingの小説など)を持っている可能性があります。
このリポジトリには、xunit.netテストライブラリが含まれています。テストを実行するには:
ディレクトリをテストディレクトリに変更します
cd dwCheckApi.Tests
dotnet restoreコマンドを発行します(これによりすべてのnugetパッケージが解決されます)
dotnet restore
xunitコマンドを発行します
dotnet xunit
すべてのテストは、 dwCheckApiの新しいビルドに対して実行され、結果はOpen Shell/Commandプロンプトウィンドウで返されます。
dwCheckApiは次のコントローラーがあります。
本
Booksコントローラーには2つの方法があります。
得る
Get Actionは整数IDを取得します。このフィールドは、小説の序数を表しています。この順序はリリース順序に基づいているため、ユーザーが「ナイトウォッチ」のデータを必要とする場合、次のようにGETリクエストを設定します。
/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コントローラーには2つの方法があります。
Get Actionは整数IDを取得します。このフィールドは、データベース内の文字エントリのIDを表します。 IDエントリは、データセットの作成中にエンティティフレームワークコアがデータベースへのエントリを持続する順序に完全に依存しているため、このAPIの消費者がこのコントローラーメソッドを使用することをお勧めしません。これは予測不可能です。完全性のためにここに含まれており、おそらく後のバージョンで削除されます。
この順序はリリース順序に基づいているため、ユーザーが「ナイトウォッチ」のデータを必要とする場合、次のようにGETリクエストを設定します。
/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スペースWikiは現在、データベースをシードするために使用されています。
すべてのキャラクターと本のデータは、Terry Pratchettおよび/またはTransworldの出版社に著作権で保護されています。侵害は意図されていません。
SeedDataディレクトリには、JSONファイルのコレクションがあります。これらのファイルのデータソースは、L-Space Wiki(上記)とY独自の知識に関する知識の組み合わせです。
JSONファイルに変換する際に、L-Space Wikiからのデータを変更していません。そのため、LスペースWikiライセンス(Creative Commons Attribution ShareAlike 3.0ライセンス)は引き続き適用されます。
L-Space Wikiで使用されているライセンスの詳細については、 Data License.mdファイルを参照してください。