Full Chapter The Complete Asp Net Core 3 Api Tutorial Hands On Building Testing and Deploying 1St Edition Les Jackson 2 PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 53

The Complete ASP.

NET Core 3 API


Tutorial: Hands-On Building, Testing,
and Deploying 1st Edition Les Jackson
Visit to download the full and correct content document:
https://textbookfull.com/product/the-complete-asp-net-core-3-api-tutorial-hands-on-bui
lding-testing-and-deploying-1st-edition-les-jackson-2/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

The Complete ASP.NET Core 3 API Tutorial: Hands-On


Building, Testing, and Deploying 1st Edition Les
Jackson

https://textbookfull.com/product/the-complete-asp-net-core-3-api-
tutorial-hands-on-building-testing-and-deploying-1st-edition-les-
jackson-2/

Biota Grow 2C gather 2C cook Loucas

https://textbookfull.com/product/biota-grow-2c-gather-2c-cook-
loucas/

Essential Angular for ASP.NET Core MVC 3 Adam Freeman

https://textbookfull.com/product/essential-angular-for-asp-net-
core-mvc-3-adam-freeman/

Beginning C 7 Hands On The Core Language Tom Owsiak

https://textbookfull.com/product/beginning-c-7-hands-on-the-core-
language-tom-owsiak/
Advanced ASP.NET Core 3 Security: Understanding Hacks,
Attacks, and Vulnerabilities to Secure Your Website 1st
Edition Scott Norberg

https://textbookfull.com/product/advanced-asp-net-
core-3-security-understanding-hacks-attacks-and-vulnerabilities-
to-secure-your-website-1st-edition-scott-norberg/

The DevOps 2 1 Toolkit Docker Swarm Building testing


deploying and monitoring services inside Docker Swarm
clusters 1st Edition Viktor Farcic

https://textbookfull.com/product/the-devops-2-1-toolkit-docker-
swarm-building-testing-deploying-and-monitoring-services-inside-
docker-swarm-clusters-1st-edition-viktor-farcic/

Architecting ASP.NET Core Applications Carl-Hugo


Marcotte

https://textbookfull.com/product/architecting-asp-net-core-
applications-carl-hugo-marcotte/

Pro Entity Framework Core 2 for ASP.NET Core MVC Adam


Freeman

https://textbookfull.com/product/pro-entity-framework-core-2-for-
asp-net-core-mvc-adam-freeman/

Essential Docker for ASP.NET Core MVC 1st Edition Adam


Freeman

https://textbookfull.com/product/essential-docker-for-asp-net-
core-mvc-1st-edition-adam-freeman/
Les Jackson

The Complete ASP.NET Core 3 API


Tutorial
Hands-On Building, Testing, and Deploying
1st ed.
Les Jackson
Melbourne, VIC, Australia

Any source code or other supplementary material referenced by the


author in this book is available to readers on GitHub via the book’s
product page, located at www.​apress.​com/​9781484262542. For more
detailed information, please visit http://​www.​apress.​com/​source-code.

ISBN 978-1-4842-6254-2 e-ISBN 978-1-4842-6255-9


https://doi.org/10.1007/978-1-4842-6255-9

© Les Jackson 2020

This work is subject to copyright. All rights are reserved by the


Publisher, whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of illustrations,
recitation, broadcasting, reproduction on microfilms or in any other
physical way, and transmission or information storage and retrieval,
electronic adaptation, computer software, or by similar or dissimilar
methodology now known or hereafter developed.

The use of general descriptive names, registered names, trademarks,


service marks, etc. in this publication does not imply, even in the
absence of a specific statement, that such names are exempt from the
relevant protective laws and regulations and therefore free for general
use.

The publisher, the authors and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.

Included with manuscript

Distributed to the book trade worldwide by Springer Science+Business


Media New York, 233 Spring Street, 6th Floor, New York, NY 10013.
Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-
[email protected], or visit www.springeronline.com. Apress Media,
LLC is a California LLC and the sole member (owner) is Springer
Science + Business Media Finance Inc (SSBM Finance Inc). SSBM
Finance Inc is a Delaware corporation.
For Quynh
Acknowledgments
Writing this book (my first) has been a real eye-opener for me… I
greatly underestimated the extent to which I would rely on other
people (either directly or indirectly) to inspire, encourage, and just
generally help me to finish it. So, in true “Oscars style,” and in no
particular order, I’d like to thank the following groups of people in
helping to bring this book into the world. Without them, this book
would not exist.
For their good humor, endless support, and indulgence of me, I’d
like to thank my friends, family, and wonderful partner (to whom this
book is dedicated).
For their patience, support, and belief in a first-time author, I’d like
to express sincere thanks to the wonderful, professional editorial staff
at Apress.
For their insights, time, and willingness to share their knowledge,
I’d like to thank the fantastic community of C#/.NET professionals.
And finally, along with the countless others that have read my blog
or watched my YouTube channel, I’d like to thank you – the reader of
this book. You may never know just how significant supporting me in
this way has been…
Table of Contents
Chapter 1:​Introduction
Why I Wrote This Book
Apress Edition
The Approach of This Book
Where Can You Get the Code?​
Main Solution Repository (API and Unit Tests)
Secure Daemon Client Repository
Conventions Used in This Book
Version of the .​net Core Framework
Contacting the Author
Defects and Feature Improvements
Chapter 2:​Setting Up Your Development Environment
Chapter Summary
When Done, You Will
The Three Amigos:​Windows, Mac, and Linux
Your Ingredients
Links to the Software and Sites
Install VS Code
C# for Visual Studio Code
Insert GUID
Install .​NET Core SDK
Install GIT
Name and Email
Install Docker [Optional]
What Is Docker?​
Docker Desktop vs.​Docker CE
Post-installation Check
Docker Plugin for VS Code
Install PostgreSQL
Install DBeaver CE
DBeaver vs.​pgAdmin
Install Postman
Trust Local Host Development Certs
Wrapping It Up
Chapter 3:​Overview of Our API
Chapter Summary
When Done, You Will
What Is a REST API?​
Our API
Payloads
Five Minutes On JSON
Chapter 4:​Scaffold Our API Solution
Chapter Summary
When Done, You Will
Solution Overview
Scaffold Our Solution Components
Creating Solution and Project Associations
Anatomy of An ASP.​NET Core App
The Program and Startup Classes
Chapter 5:​The “C” in MVC
Chapter Summary
When Done, You Will
Quick Word on My Dev Setup
Call the Postman
What Is MVC?​
Model–View–Controller
Models, Data Transfer Objects, Repositories, and Data
Access
Our Controller
1.​Using Directives
2.​Inherit from Controller Base
3.​Set Up Routing
4.​APIController Attribute
5.​HttpGet Attribute
6.​Our Controller Action
Source Control
Git and GitHub
Setting Up Your Local Git Repo
.​gitignore file
Track and Commit Your Files
Set Up Your GitHub Repo
Create a GitHub Repository
So What Just Happened?​
Chapter 6:​Our Model and Repository
Chapter Summary
When Done, You Will
Our Model
Data Annotations
Our Repository
What Is an Interface?​
What About Implementation?​
Dependency Injection
Back to the Start (Up)
Applying Dependency Injection
Chapter 7:​Persisting Our Data
Chapter Summary
When Done, You Will
Architecture Progress Check
PostgreSQL Database
Using Docker
Docker Command Prompt
Connecting with DBeaver
Entity Framework Core
The What and Why of ORMs
Entity Framework Command-Line Tools
Create Our DB Context
Update appsettings.​json
Revisit the Startup Class
Create and Apply Migrations
Adding Some Data
Tying It Altogether
Create a New Repository Implementation
Get All Command Items
Get A Single Command (Existing)
Get A Single Command (Not Existing)
Wrapping Up the Chapter
Redact Our Login and Password
Chapter 8:​Environment Variables and User Secrets
Chapter Summary
When Done, You Will
Environments
Our Environment Setup
The Development Environment
So What?​
Make the Distinction
Order of Precedence
It’s Time to Move
User Secrets
What Are User Secrets?​
Setting Up User Secrets
Deciding Your Secrets
Where Are They?​
Code It Up
Wrap It Up
Chapter 9:​Data Transfer Objects
Chapter Summary
When Done, You Will
Architecture Review
The What and Why of DTOs
Decouple Interface from Implementation (Again)
Implementing DTOs
Create Our DTOs
Setting Up AutoMapper
Using AutoMapper
Chapter 10:​Completing Our API Endpoints
Chapter Summary
When Done, You Will
Persisting Changes in EF Core
DB Context Tracks Changes
The Create Endpoint (POST)
Input Object
Success Outputs
Idempotency
Updating the Repository
CommandCreateDto​
Updating the Controller
Manually Testing the Create Endpoint
The Update Endpoint #1 (PUT)
Input Object
Success Outputs
Idempotent
Updating the Repository
CommandUpdateDto​
Updating the Controller
Manually Testing the Update (PUT) EndPoint
The Update Endpoint #2 (PATCH)
Input Object
Idempotent
Updating the Repository
CommandUpdateDto​
Install Dependencies for PATCH
Updating the Startup Class
Updating the Controller
Manually Testing the Update (PATCH) EndPoint
The Delete Endpoint (DELETE)
Updating the Repository
CommandDeleteDto​
Updating the Controller
Wrap Up
Chapter 11:​Unit Testing Our API
Chapter Summary
When Done, You Will
What Is Unit Testing
Protection Against Regression
Executable Documentation
Characteristics of a Good Unit Test
What to Test?​
Unit Testing Frameworks
Arrange, Act, and Assert
Arrange
Act
Assert
Write Our First Tests
Testing Our Model
Don’t Repeat Yourself
Test Our Controller
Revisit Unit Testing Characteristics
GetAllCommands Unit Tests and Groundwork
GetAllCommands Overview
GetAllCommands Unit Tests
Groundwork for Controller Tests
Finish Test 1.​1 – Check 200 OK HTTP Response (Empty DB)
Test 1.​2 – Check Single Resource Returned
Test 1.​3 – Check 200 OK HTTP Response
Test 1.​4 – Check the Correct Object Type Returned
GetCommandByID Unit Tests
GetCommandByID Overview
GetCommandByID Unit Tests
Test 2.​1 – Check 404 Not Found HTTP Response
Test 2.​2 – Check 200 OK HTTP Response
Test 2.​3 – Check the Correct Object Type Returned
CreateCommand Unit Tests
CreateCommand Overview
CreateCommand Unit Tests
Test 3.​1 Check If the Correct Object Type Is Returned
Test 3.​2 Check 201 HTTP Response
UpdateCommand Unit Tests
UpdateCommand Overview
UpdateCommand Unit Tests
Test 4.​1 Check 204 HTTP Response
Test 4.​2 Check 404 HTTP Response
PartialCommandUp​date Unit Tests
PartialCommandUp​date Overview
PartialCommandUp​date Unit Tests
Test 5.​1 Check 404 HTTP Response
DeleteCommand Unit Tests
DeleteCommand Overview
DeleteCommand Unit Tests
Test 6.​1 Check for 204 No Content HTTP Response
Test 6.​2 Check for 404 Not Found HTTP Response
Wrap It Up
Chapter 12:​The CI/​CD Pipeline
Chapter Summary
When Done, You Will
What Is CI/​CD?​
CI/​CD or CI/​CD?​
What’s the Difference?​
So Which Is It?​
The Pipeline
What Is Azure DevOps?​
Alternatives
Technology in Context
Create a Build Pipeline
What Just Happened?​
Azure-Pipelines.​yml File
Triggering a Build
Revisit azure-pipelines.​yml
Another VS Code Extension
Running Unit Tests
Breaking Our Unit Tests
Testing – The Great Catch All?​
Release/​Packaging
Wrap It Up
Chapter 13:​Deploying to Azure
Chapter Summary
When Done, You Will
Creating Azure Resources
Create Our API App
Create Our PostgreSQL Server
Connect and Create Our DB User
Revisit Our Dev Environment
Setting Up Config in Azure
Configure Our Connection String
Configure Our DB User Credentials
Configure Our Environment
Completing Our Pipeline
Creating Our Azure DevOps Release Pipeline
Pull the Trigger – Continuously Deploy
Wait! What About EF Migrations?​
Double-Check
Chapter 14:​Securing Our API
Chapter Summary
When Done, You Will
What We’re Building
Our Authentication Use Case
Overview of Bearer Authentication
Build Steps
Registering Our API in Azure AD
Create a New AD?​
Register Our API
Expose Our API
Update Our Manifest
Add Configuration Elements
Update Our Project Packages
Updating our Startup Class
Update Configure Services
Update Configure
Update Our Controller
Register Our Client App
Create a Client Secret
Configure API Permissions
Create Our Client App
Our Client Configuration
Add Our Package References
Client Configuration Class
Finalize Our Program Class
Updating for Azure
Client Configurations
Deploy Our API to Azure
Epilogue
Index
About the Author
Les Jackson
is originally from Glasgow, Scotland, but
has lived and worked in Melbourne,
Australia, since 2009. Since completing
his computer science degree in 1998, he
has worked in IT, primarily in the
telecommunications industry and with
the incumbent national telecom
providers. Les holds several industry
accreditations and has reacquired a
Microsoft Certified Solutions Developer
certification, although he still believes
there is no substitute for experience and
passion and says, “beware of people touting certifications!” Aside from
his day job, Les enjoys producing content for his YouTube channel and
blog, where he hopes to grow his wonderful audience over the coming
years. In his downtime he likes cycling, trying to grow vegetables,
making (and drinking) beer, and traveling with his partner.
About the Technical Reviewer
Kris van der Mast
As a freelance Microsoft technologies
expert, Kris van der Mast helps his
clients to reach their goals. Actively
involved in the global community, he is a
Microsoft MVP since 2007. First for ASP.​
NET and since 2016 achieving in two
disciplines: Azure and Visual Studio and
Development Technologies. Kris is also a
Microsoft ASP Insider, Microsoft Azure
Advisor, aOS ambassador, and a Belgian
Microsoft Extended Experts Team
(MEET) member. In the Belgian
community, Kris is active as a board
member of the Belgian Azure User Group AZUG and is chairman of the
Belgian User Group Initiative (BUG). Since he started with .NET back in
2002, he’s also been active on the ASP.​NET forums where he is also a
moderator. His personal site can be found at
www.krisvandermast.com . Kris is a public (inter)national speaker
and is a co-organizer of the CloudBrew conference.
Personal note:
I enjoyed reviewing this book. It’s easy to follow, and I liked the fact
that unit tests were added to the story. The approach of using Docker,
and how to set it up, gives this book that extra which the reader will
find handy in her/his professional environment.
© Les Jackson 2020
L. Jackson, The Complete ASP.NET Core 3 API Tutorial
https://doi.org/10.1007/978-1-4842-6255-9_1

1. Introduction
Les Jackson1
(1) Melbourne, VIC, Australia

Why I Wrote This Book


Aside from the fact that everyone is supposed to have “at least one book
in them,” the main reason I wrote this book was for you – the reader.
Yes, that’s right; I wanted to write a no-nonsense, no-fluff/filler book
that would enable the general reader 1 to follow along and build, test,
and deploy an ASP.NET Core API to Azure. I wanted it to be a practical,
straightforward text, producing a tangible, valuable outcome for the
reader.
Of course, you will be the judge on whether I succeeded (or not)!

Apress Edition
Prior to publishing this book now with Apress, I had released two
earlier editions of the book. Having taken a Lean Startup approach
(releasing versions as is when they were ready), I received feedback on
each of those to make each successive version better. With the release
of .NET Core 3.1 in November 2019, it seemed like the perfect time to
release the second edition which was updated for that version of the
framework, as well as some other updates, primarily a move to
PostgreSQL as the backend Database.
This Apress edition sees the introduction of the use of Data Transfer
Objects (DTOs), as well as the use of the Repository Pattern, both of
which speak to the idea of decoupling interfaces from implementation,
which has a range of benefits as you will see. I’ve also added an
endpoint to our example API that responds to the “PATCH” verb, which
allows us to perform partial updates on resources. This was a sorely
missing component from the previous versions of the book and was
long overdue for inclusion.

The Approach of This Book


I’ve taken a “thin and wide” approach with this book, meaning that I
wanted to cover a lot of material from the different stages in the
development of an API (wide), without delving into extraneous detail or
theory for each (thin). We will, however, cover all the areas in enough
practical detail, in order that you gain a decent understanding of each –
that is, we won’t skip anything important!
I like to think of it like a tasting menu . You’ll get to try a little bit of
everything, so that by the end of the meal you’ll have an appreciation of
what you’d like to eat more of at some other time, you should also feel
suitably satisfied!

Figure 1-1 Thin and wide approach

Les’ Personal Anecdote The first time I tried (or even heard
of) a tasting menu was in a Las Vegas casino (I think it was the MGM
Grand) in the early 2000s. In addition to trying the eight items on the
menu, we also went with the “wine pairing” option – which as the
name suggests meant you got a different glass of wine with each
course, specifically selected to compliment the dish.
I think this is the reason why I can’t remember the name of the
casino.

Where Can You Get the Code?


While I think you’ll get more value by following along throughout the
book and typing in the code yourself (the book has been written so you
can follow along step by step), you may of course prefer to download
the code and use that as a reference. Indeed, as there may be errata
(heaven forbid!), it’s prudent that I provide a repository for you, so you
can just head over to GitHub and get the code there.

Main Solution Repository (API and Unit Tests)


https://github.com/binarythistle/Complete-ASP-NET-
3-API-Tutorial-Book

Secure Daemon Client Repository


https://github.com/binarythistle/Secure-Daemon-
Client

Conventions Used in This Book


The following style conventions are used in this book.

General additional information for the reader on top of the


main narrative, hint or tip.

Warning! Some point of notice, so the reader should proceed


with caution.

Learning Opportunity Self-directed learning opportunity.


Something the reader can do on their own to facilitate learning and
understanding.
Celebration Checkpoint Good job, milestone, worth calling
out. Allows you to reflect and check learning.

Les’ Personal Anecdote Personal story or viewpoint to add


context to a point I’m making. I’ll usually try to be humorous here –
so be warned. Not required reading to complete working through the
book!

Version of the .net Core Framework


At the time of writing (May 2020), I’m using version 3.1 of the .NET
Core Framework.

Contacting the Author


You can contact me through the following channels:
[email protected]
https://dotnetplaybook.com/
www.youtube.com/binarythistle
While I’ll do my best to reply to you, I’m unlikely to be able to
respond to detailed, lengthy technical questions.

Defects and Feature Improvements


Defects (errata) and suggestions for improvement should be sent to
[email protected]
Any corrections, additions, or improvements to the code will be
reflected in the GitHub Repository.

Footnotes
1 Fans of Peep Show, I took this term from one of my favorite episodes of Season 9:
www.imdb.com/title/tt2128665/?ref_=ttep_ep4
© Les Jackson 2020
L. Jackson, The Complete ASP.NET Core 3 API Tutorial
https://doi.org/10.1007/978-1-4842-6255-9_2

2. Setting Up Your Development


Environment
Les Jackson1
(1) Melbourne, VIC, Australia
Chapter Summary
In this chapter, we detail the tools and setup you’ll require to follow the
examples in this book.

When Done, You Will


Understand what tools you’ll need to install
Have installed those tools and configured your environment ready
for development

The Three Amigos: Windows, Mac, and Linux


One of the benefits of the .NET Core Framework (when compared with
the original .NET Framework) is that it’s truly cross-platform,1 meaning
that you can develop and run the same apps on Windows, OSX (Mac), or
Linux. For the vast majority of this book, the OS that you run on should
make little difference in following along with the examples, so the
choice of OS is almost irrelevant and of course entirely up to you.
I’ve moved to PostgreSQL as the database backend which is
available natively on Windows, Linux, and OSX. I will, however, be
running it as a Docker container, but more of that later.

I list the additional software that you need to follow along with
the book below but have decided not to go into step-by-step detail
about how to install them, for the following reasons:
The book would become way too bloated if I provided instructions
for all three OSs (remember – no filler content!).
My instructions would go out of date quickly and would possibly
confuse more than help.
The various vendors typically provide perfectly decent install
guides that they maintain and keep up to date (if not, I’ll provide
them!).
Note If there’s any additional nonstandard config/setup
required, I will of course cover that.

Your Ingredients
I’m going to assume you have the absolute basic things like a PC or Mac,
a web browser, and an Internet connection (if not, you’ll have to get all
of those!), so the software I’ve listed below is the extra stuff you’ll likely
need to follow along.2

Ingredient What is it? Cost Required for Platform


VS Code Cross-platform, fully Free Writing code! Cross-
featured text editor Note: This is just my platform
personal preference;
you can of course
choose an editor that
you are more
comfortable with
.NET Core SDK .NET Core Runtime Free It’s the framework Cross-
and SDK we’ll be building our platform
API on. As mentioned
in the opening, we’ll
use 3.1 in this book
Git Local source Code Free Local source control Cross-
control and pushing our code platform
to GitHub for eventual
publishing to Azure
PostgreSQL Local database Free We’ll use this as our Cross-
local development/test platform
database or Docker
image
DBeaver CE Database-independent Free Writing and executing Cross-
management tool SQL queries, setting up platform
DB users, etc.
Postman API Testing Tool Free You can opt to use a Cross-
web browser to test platform
Ingredient What is it? Cost Required for Platform
our API; Postman just
gives us more options
and is highly
recommended
Docker Containerization Free [Optional] I use Cross-
Desktop/Docker platform (run Docker Docker to quickly spin platform:
CE containers) up and run a Docker
PostgreSQL database Desktop –
without the need to Windows
install it (PostgreSQL) and OSX
locally on my desktop
Docker
CE –
Linux
GitHub.com Cloud-based git Free Used as the code N/A –
repository used for repository component browser-
team collaboration of our continuous based
integration/continuous
delivery (CI/CD)
pipeline
Azure The Microsoft cloud Free3 We’ll use Azure to host N/A –
services offering our production API as browser-
well as our based
“production”
PostgreSQL Database
Azure DevOps Cloud-based Free We use Azure DevOps N/A –
build/test/deployment primarily as the browser-
platform vehicle to publish our based
API to Azure. We will
also leverage its
centralized build/test
features

Links to the Software and Sites


VS Code: https://code.visualstudio.com/download
.NET Core SDK: https://dotnet.microsoft.com/download
Git: https://git-scm.com/downloads
Another random document with
no related content on Scribd:
DYE-PITS.

Hoe-handles, mortars, pestles, beds, doors, gins, spindles,


bobbins, looms, shuttles, saddles, riding-boots, sandals, slippers,
bridles, scissors, razors, rope, fishing-nets, earthenware cooking-
pots, lamps, water-bottles and pipes are among the innumerable
articles turned out by the artisan in Northern Nigeria. Indigo dye-pits
are to be found in many towns, but the great tanning centre is Kano.
Cloth-beating is a recognized branch of the former industry. After
removal from the circular pits sunk à fleur de terre, the clothes are
hung up to dry and then handed over to the beater. In a dark and
spacious hut perspiring men kneel in rows facing one another on
either side of a huge log of wood, stained black and smooth-polished
with constant use, upon which the cloths are spread and vigorously
beaten with rounded wooden mallets. Very hard work it is, as I can
personally testify, having tried my hand at it, much to the
entertainment of the dusky experts. The Kano tanneries are in
appearance disappointing; in odours surpassing anything that can be
imagined. But the product is astonishingly excellent. The completed
skins, dyed deep red or orange with native dyes, the roots, leaves
and bark of sundry shrubs and trees being utilized in the many
processes through which the raw hide passes, are as soft to the
touch as Russian leather. They are greatly appreciated in the
Western world, and the trade is a rapidly increasing one.
CHAPTER VII
THE CITY OF KANO AND ITS MARKET

You are permanently conscious that this country has a history and
traditions. Nowhere, perhaps, does the fact impress the new-comer
more vividly than at Kano. It is a wonderful place to find in Central
Africa, this native city with its great enfolding walls, twelve miles in
circumference, pierced by thirteen deep gateways (kofas), with
platform and guardhouses and massive doors heavily clamped with
iron; with its written records dating back nearly eight hundred years.
And although incomparably the most important it is not the oldest of
these Hausa cities—Katsina, now in the same “province,” is probably
older. When the West-Saxon realm fell before the onslaught of the
Danes and the first Danish King reigned over England, Hausaland
was conquered by an unknown people from the East, and when the
prosperity of the English towns was beginning to revive under Henry
I., Gijimasu, the third King of the invading dynasty, was building
Kano. When Henry VIII. was laying the foundations of personal
government, the “rich merchants and most civil people” of Kano were
entertaining Leo Africanus. Three hundred years later (1824)
Clapperton entered this “great emporium of the kingdom of Hausa,”
which Barth forty years afterwards termed the “far-famed entrepôt of
Central Africa;” which Lugard was subsequently to describe as
exceeding anything he had ever seen “or even imagined” in Africa.
Tributary now to this, now to the other, evanescent African kingdom,
frequently at war with its neighbours, repeatedly besieged, it has
survived every vicissitude. Neither the disastrous struggles with
Katsina in the seventeenth, and with Gober in the eighteenth
centuries, nor the deposition and defeat of the forty-third (and last)
King of the original dynasty by the Fulani early in the nineteenth
century, nor yet the occupation of the country by the British seven
years ago, have destroyed its influence or impaired its commercial
prestige—a tribute to the staying power and to the sterling qualities
of the truly remarkable African people whom, in the providence of
God, it has now fallen upon us to rule. Its market-place, still the
scene of clamorous activity, continues to attract merchants and
merchandise from all parts of western Central Africa. It still remains
the nerve-centre of a district whose natural fertility, aided by the
labour and skill of a hard-working, industrious population, not only
supports, as it has done for many centuries, a population of equal
density to the square mile as England boasts, but exports large
quantities of grain to less-favoured regions; and its looms continue to
supply the requirements of an immense area ranging from the Chad
to Timbuktu and the borders of Tripoli, and (in part, at least)
southwards to the Niger.

A VIEW OF A PART OF KANO CITY (INSIDE THE WALL).

Picturesque by day, with numerous and gaily dressed pedestrians


and horsemen perambulating its tortuous streets, busy crowds
around its markets, dye-pits, tanneries, and looms, Kano is still more
so when the moon floods its broad open spaces with light and flings
strange shadows across the sandy thoroughfares where they abut
upon the dwelling-places of its inhabitants. Then, but for the
occasional howl of a dog, this city which has endured so long and
withstood so much lies wrapped in impenetrable silence. The ugly
sores of Africa—not, assuredly, as ugly or as numerous as those of
Europe, but more conspicuous—are mercifully hidden. No one walks
abroad. Yet you know as you wander with noiseless footsteps
through its curves and labyrinths, escaping for once from your
inevitable native attendants (delightful people, but sadly hampering
at times), that behind these thick clay walls and closed doors, the
mysterious world of Africa is awake and stirring, that social world
with its primitive impulses, but also with its many courtesies and
refinements, that world of habit and of thought, guarded with jealous
reticence from the alien, unfathomed and unfathomable even by the
most experienced of Residents. And, again, at sunrise, when from
the summit of the minaret outside the Emir’s residence, the pink
flush of dawn steals down the sides of the city’s guardian hills, Dala
and Goronduchi, flickers upon the fronds of the palm trees, and
reveals the seemingly interminable vista of houses, mostly flat-
roofed, but varied here and there by others of humbler thatch and
conical in shape; when the blue wreaths of smoke from many fires
mount perpendicularly into the crisp, still air, mingled with the
aromatic scent of burning wood and a confused murmur of
awakening life—then, too, the city holds you in the grip of a
fascinated interest. It is difficult to explain this fascination, for the
architecture of Kano, though imposing in its way, is rude. There are
no flashing domes and sumptuous buildings as in the East; yet the
few who have visited it, and the handful of officers—all travelled men
—who by turn have had responsibility for the good order of the
Emirate would be prepared, I fancy, one and all to confess that not
even the blunting effects of familiarity can do away with the curious
influences it exercises.
A visit to the famous market-place—the Kasua Kurumi—which
covers a wide expanse, and where anything from 4000 to 7000
persons may be congregated together, according to the day, is a
bewildering experience. In this tumultuous sea of humanity, shot with
brilliant colours, details are swamped at first in general impressions.
You are aware of a vast concourse of men and women, cheery-
faced, closely packed together, clad in robes of many hues—white
and various shades of blue predominating; of tossing arms and
turbaned heads; of long lines of clay-built booths where piled-up
merchandise awaits the customer; of incessant movement, the strife
of many tongues, the waft of many scents, mostly the reverse of
fragrant—over all, blue sky and fierce hot sun. As you move along
with frequent pauses necessitated by the crush, and the eye gets
more accustomed to the scene, some at least of its component parts
stand out more clearly from the ever-shifting view, and the
extraordinary variety of human types and the multiplicity of articles
on sale is realized.
The home of the Kanawa (people of Kano), whose industry is
famed from the Atlantic to the Mediterranean, one would naturally
expect to find their numbers in the ascendant. Keen-featured men of
business, women with elaborate coiffures resembling pictures of old
Assyrian helmets, their cheeks often disfigured by exaggerated
“beauty spots” daubed on with lead or antimony. Other Hausas,
visitors from Katsina, Gober, or Daura, each with the distinguishing
facial mark of his clan, six strokes with a dot for Katsina, two for
Daura, and so on. Pale-complexioned Fulani from the country, the
women wearing their straight hair in ringlets, with silver earrings and
gentle eyes. The Nupe, with his characteristic headgear of red,
black, and yellow straw. Thick-lipped Kanuris from Bornu. Tall, lithe
Tuareg from distant Sokoto, or Asben. The Arab merchant, arrogant
and intriguer, making his way through the market to the “Arab
quarter,” a quarter of the city remarkable for its Moorish architecture
and unpleasantly notorious for its smells.
Each trade has its quarter. Beneath the shelter of the booths
vendors sit cross-legged, their wares spread out before them. Cloths
of every hue and texture under the sun, it would seem, absorb one
whole quarter, and form, perhaps, the most important article of sale,
although the more valuable clothes are seldom seen, for the Kano
market is essentially a retail one, transactions in objects of more
costly worth taking place within the shelter of private houses. You will
see enough in the cloth quarter, however, to appreciate the diversity
of quality and design, from the beautifully embroidered Kano riga (a
sort of hoodless cloak universally worn by the better classes,
covering the body from neck to knee) to the common shirting of
Manchester, the white bullan or gown from Bornu, the arigiddi, or
woman’s cloth from Zaria, the faringodo, or plain white cloth from
Ilorin, the majai, or webbing made by the pagan tribes of Bauchi, and
used by the Fulani for girths. The products of native looms from
towns hundreds of miles distant, enjoying special renown for some
attractive peculiarity, are purchasable here, together with the
manufactures of Europe. The former are almost infinite in diversity,
and each has its particular uses. Black, white, and blue gowns,
brocade, striped brocade, striped shirting, white shirting, shirting with
a red border, white and black checks, drill, red baft, cloths for
turbans, caps, fezzes, expensively embroidered trousers, sleeveless
under-vests, velvet—all in endless variety.
In the leather quarter you will find great quantities of saddlery from
Tripoli, and also of local manufacture, highly ornamented bridles,
stirrup-leathers, despatch-bags, Korans in leather cases, purses, red
slippers, sandals, quilted horsecloths, undyed goatskins and
cowhides, swords in scabbards, many of them admirable in
workmanship. An examination of the latter will disclose the
interesting fact that the blades of the most expensive specimens
bear the Sölingen mark, a curious example of the conservatism of
this interior African trade, for as far back as the middle of the last
century Sölingen sword blades were imported into Kano across the
desert. Passing out of the leather quarter you will find silver, brass,
and tin ware; among the former necklaces and earrings which would
not disgrace a London jeweller’s shop-window, ruder bangles and
anklets, partly tin, partly silver; brass urns and bowls, and glass
bracelets from Bida. Necklaces of beads, Venetian and local, of
agates imported from Tripoli and polished and cut at Bida, of cheap
European coral, of different kinds of bright-coloured local seeds.
Rough pottery, but often of elegant design, such, for example, as the
small lamps used for burning ground-nut oil, in the manufacture of
which mica enters.
Sheds and stalls, in addition to the booths, are devoted to the sale
of numerous merchandise. The store of an elderly white-turbaned
Hausa contains a mass of rough silk mixed up with the cocoons;
these are produced by the silkworm, which feeds on the tamarind
tree. The rigas made from it are very dear, and also very pleasant to
the touch, resembling in that respect and in colour tussore. Here is a
stall containing the products of the local smithy, stirrup-irons, locks
for doors, every kind of agricultural implement used by the native
farmer, axes, knives, and skin-scrapers used in preparing goat and
sheep skins for export. There a stall filled with native herbs used as
medicines, from the tafarnua for rheumatism to the karijiji for colds,
the kula and passakori much used by women after child-birth. Much
space is taken up by the sellers of foodstuffs, mostly vegetable, such
as guinea-corn and millet in variety, beans, yams, sugar-cane, sweet
potatoes (in variety), pepper, onions, the fruit of the tamarind, the red
flowers of the tobacco plant, cassava, and ginger.

ONE OF THE GATEWAYS TO KANO CITY, SHOWING OUTER WALL.


ANOTHER OF THE ENTRANCES TO THE CITY.

In another direction you will observe on sale European salt and


native potash in cakes and cones, zana-mats, firewood, native rope,
roofing, sticks with branches, guinea-corn and millet stalks for
fencing, native beds, doors made of palm sticks, baskets, mats in
great diversity of size and colouring. Round about the booths and
sheds on every side sit men and women (mostly the latter) selling
articles of local or European origin; by their side, and, apparently, no
more carefully watched than the articles themselves, small piles of
cowries and sometimes the new nickel coinage we have introduced,
and threepenny bits represent the takings of the day. Among such
articles are to be observed indigo, antimony, ground-nuts, the
inevitable kola-nut, shea-butter, spices, cow-dung in small packets
(very precious), raw cotton, henna (lelli) for staining hands or feet,
fresh honey, cakes and sweetmeats (of a fearful and wonderful
composition), native soap from Nupe (sabouni), bobbins, shuttles,
and other necessities of the national industry, cigarettes, red wool,
green wool, crochet-thread, water-pots, and sundry cheap trinkets
from Europe. The butchers’ quarter it is best to pass by swiftly;
unsavoury in Europe, the flies and tropical sun do not improve it in
Africa. Long files of cattle, donkeys, sheep, and goats can be seen
winding their way to the cattle market, where many thousands are
daily on sale.
CHAPTER VIII
A VISIT TO THE EMIR OF KANO

Kano Province under the British Administration includes a number


of independent Emirates which we found existing and which we have
maintained, viz.: Kano, Katsina, Katagum, Daura, Kazaure and
Gummel. The total area of the Province is 28,600 square miles, i.e.
almost the size of Scotland, and its population 2,600,000, or what
that of Scotland was in the middle of last century.
The present Emir, Abbas, a reserved and very dark Fulani, with
refined regular features and long aristocratic hands, is a fine figure of
a man. The description of a visit to him may serve to convey some
idea of the ceremonious etiquette observed at the courts of the
Mohammedan Emirs (Kano being typical of all the great Emirates,
with the exception of Sokoto where formalities are even more
elaborate), besides throwing light upon several questions of interest
and moment connected with the problems of British administration.
To depict the Emir’s residence as a compound built of clay is, while
accurate, to give but an inadequate idea of the imposing character of
these solid structures, the best of which are, with supervision,
capable of resisting for centuries the action of the weather. I am
probably understating the case when I say that the tall and bulky wall
—some fifteen feet in thickness—surrounding the residence
encloses five acres. Dismounting at the principal entrance, we are
escorted through the gateway by several functionaries and emerge
into a vast enclosure open to the sky. At its extremity, facing us, is an
inner wall and another deep embrasured gateway leading to the
state apartments. On our right stands the Emir’s private mosque, a
building of considerable proportions but smaller, of course, than the
public mosque outside the walls. Here and there a few picturesque
figures are noticeable. For, perhaps, a minute we wait. Then a blare
of trumpets resounds, and through the inner gateway emerges a
brilliant gathering which advances slowly towards us, the Emir in the
midst. Within a dozen yards or so it halts, and the Emir, separating
himself from the throng, greets us with hand outstretched—the only
African in the Emirate to whom etiquette allows this particular form of
salutation with the White man. Towering above most of the
councillors, officers of state and heads of leading families by whom
he is accompanied, and bearing himself with great dignity, the Emir
murmurs some words of welcome. He is dressed entirely in costly
white robes and turban; his feet are encased in ostrich-feather
sandals, a footgear introduced in the sixteenth century by Mohamma
Rimfa, the twentieth Emir of Kano, justly revered for a reign full of
years and usefulness, and he carries the silver-mounted staff of
office presented to all the ruling Emirs by Sir Frederick Lugard after
the British occupation. He invites us to follow him and leads the way
in silence to his apartments, his courtiers closing round us as we
proceed. In the same impressive silence we pass through the inner
gateway and find ourselves in a broad passage flanked on either
side by lofty audience chambers whose dimensions it is difficult to
gauge in the semi-obscurity which reigns within them. At the end of
the passage is yet another gateway. Thenceforth we proceed alone
with the Emir and the Waziri or Vizier—the present holder of that
office being a man of great independence and strength of character,
whose fearless candour and ripe judgment have been of inestimable
service in assisting successive Residents to understand the many
complex problems of native administration. Crossing a courtyard we
enter the outer room of the Emir’s private apartments. And here for
an hour we discuss many things, chairs being provided for us while
the Emir and Waziri, in accordance with the etiquette of the country,
sit cross-legged before us. A word as to the architecture and
appearance of the room, which, as we were subsequently to
ascertain, is roughly similar to the audience chambers we have left
behind. It is some twenty to twenty-five feet in height, with an arched
roof supported by wooden beams on the cantilever principle; both
beams and roof are, like the floor, stained a deep black with the
varnish obtained from the shell of the locust bean; a few plates of
European manufacture are let into the supporting rafters; the walls,
constructed of the usual sun-baked clay mingled with other
substances, have a glittering appearance due to the admixture of
mica; two doors, an outward and an inward one, of massive timber
bound with iron bars affixed by native nails ornamented with large
circular brass heads, and a divan of rugs and shawls complete a
picture which suggests a certain austere simplicity.

INSIDE KANO CITY.

After the usual interchange of compliments, I said it was desirable


the Emir should understand clearly in respect to any subjects which
might be touched upon, that I had no connection direct or indirect
with the British Government, or with any British commercial or other
interest; that I was merely visiting his country as an independent
traveller, and would report what I had seen and heard, and that I
hoped he would feel free to tell me frankly what was in his heart, for
the people of England only wished to know the truth. Conversation
then ranged over the part of the province of Kano I had, up to that
time, visited; the industry of the inhabitants, their methods of
agriculture, the care they bestowed upon secondary crops, such as
cotton, cassava and onions, the great city market and the variety of
goods sold therein. I expressed a wish to see the irrigated farms,
and the Emir named certain localities near the city where such farms
were to be seen. The increasing prosperity of the country through
the preservation of peace was touched upon de part et d’autre. The
antiquity of the city and its interesting records was the next subject
approached. It would, I remarked, be a very great pity if its essential
characteristics were not maintained amid the innovations which the
railway would bring in its train. From that point of view I ventured to
express regret that the ancient walls of the city were, in parts, falling
into disrepair. In time to come future generations of Kanawa would, I
thought, lament the fact. Would it not be possible to start repairs on
one section at first, performing the needed work gradually, doing a
certain amount every year and finishing section by section? The
Emir fully concurred, saying that his people themselves wished the
walls restored. He hoped to deal with the matter, but thought that it
might be easier to commence preliminary repairs on a general scale
rather than start one part and finish that first as I had suggested.
From the question of the wall we turned to the more difficult one of
European traders and educated Native traders from the coast whom
the railway would bring, settling in the city. The Emir remarked that,
while foreign merchants were welcome, it would be better for them
and for the city and its inhabitants if those who wished to trade with
the Kanawa founded places of business at convenient spots outside.
THE EMIR OF KANO ON THE MARCH.

Missionary propaganda in the Muslimised Hausa States of the


north was next touched upon. The subject has already given rise to
discussions at home, which are being followed in Northern Nigeria
with anxious concern, and such momentous consequences are
bound up in it that I felt it incumbent to ascertain through personal
contact, the views of one of the most important, in a certain measure
the most important, of the Mohammedan chiefs through whom we
exercise supreme control. I told the Emir I would be quite frank with
him, and hoped that he would be equally frank with me. The English
people and the Kanawa people, I said, worshipped the same
Almighty Creator of the universe. The English people followed the
teachings of Christ, the Kanawa people the teachings of
Mohammed, and both peoples thought their religion the best. But
although the people of England held firmly to their beliefs, they had
no desire to interfere with that of the Kanawa. Their representative,
Sir Frederick Lugard, had pledged himself in their name to that
effect, and the English people always kept their word. But, I went on,
some of my countrymen who wished well to the Kanawa, thought
Christianity could be preached in Kano without breaking this pledge,
because there would be no interference and no moral pressure
would be put upon the people of Kano to change their religion even
though Christian teachers sat down in the city and taught. The
Kanawa could come and hear them, or not, as they pleased. That
was the view held by some of the people in my country. What I
wished to know were the Emir’s opinions in the matter. Did he, or did
he not, see objections to the presence of Christian preachers in the
city?
For some time the Emir kept silent, his fingers twitching nervously.
One could see the struggle passing in his mind and realize some of
the difficulties of his own position. Presently he spoke thus—I
reproduce the words as literally as possible:—

“Mohammedanism is a matter of the heart. Our fathers and


our grandfathers were Muslims. For many generations we
have been Muslims. What is the use of preaching if there are
no converts? Even if the Christian missionary tried to meet
the native on equal terms he could not do so because all
white men are Sarikis (chiefs), and the people cannot help so
regarding them. The missionaries might not wish to use force.
But they would exercise pressure amounting to force,
because of the prestige all white men have, and the people
would be disturbed and troubled in their minds.
“There would be unrest.”

I asked the Emir whether he would have any objection to


confirming in writing the views he had expressed. After a further
period of silent consideration, he said he had none. Here is the letter
subsequently received from him, rendered from the Arabic text:—

“Praise to God who only is to be praised.


“Salutations.
“This letter is directed to the stranger, Mr. Morel, who has
come.
“Know that as regards the preaching (of Christianity) which
we discussed here, my opinion is that it were better to stop it
altogether, from the first—because, if our people are disturbed
about their religion they will become suspicious and afraid.
Hence the country will become unsettled. Neither you nor we
desire the country to become unsettled, for that would be
harmful. On the other hand, as regards secular matters and
the affairs of this world, we can do anything—however great a
change it might be—since our people are accustomed to law
and to obey the orders of their rulers as their fathers and
grandfathers were before them. Also, as regards white men
living in the city of Kano, if they do so many of our people will
leave it, since the white men are too strong, and every one of
them is in our eyes, a great man and powerful. The lion and
the lamb cannot lie down together. My opinion is that the
white man who may wish to settle should have a separate
town outside the city of Kano—then we shall have our town
and they will have theirs. This is the wisest course, and far
more advantageous for our subjects than a mixed city of
natives and non-natives.
“Peace.”

At the close of the interview we were reconducted with the same


ceremonious politeness and in the same silence as before to the
centre of the outer enclosure, where we took our leave.
CHAPTER IX
GOVERNING ON NATIVE LINES

The fundamental principle aimed at by the Government in


Northern Nigeria is indirect administration, i.e. administration through
the native rulers of the communities, the Chiefs and their executives,
under the supervision and with the assistance of the Residents. That
was the policy laid down by Sir Frederick Lugard in a series of
comprehensive Memoranda which form not the least notable feature
of the great work he carried out during his tenure of office, a work
entirely creative, be it remembered, a work of which the value can
but grow in public estimation as the sense of perspective deepens
with the years, and as additional information supplies what in the
early days of the occupation was largely lacking. That was the policy
Sir Frederick Lugard’s successor, Sir Percy Girouard, found in being,
not, indeed, unthreatened, but enthusiastically upheld by the most
experienced members of the Political Staff. He not only gave it his
full official support and checked certain leanings of an opposite kind,
but he brought to bear upon the situation a personal sympathy, an
illuminating and penetrative genius which popularized the policy in
quarters previously hostile or indifferent. Sir Henry Hesketh Bell has
loyally followed in the footsteps of his predecessors. That nothing
should be allowed to divert us from keeping on the same road is the
writer’s conviction, for what it may be worth, after several years’
study at a distance and recent investigations on the spot.
A genuine and honest endeavour is being made not only to rule
through the native Chiefs, but to rule through them on native lines.
Too much importance can hardly be ascribed to the distinction. The
success already attained would be thrown away if policy were
deflected in the direction of substituting European for native ideas. If
the native machine is expected to perform functions for which it is
unqualified, the works get out of gear. If the Chiefs are called upon to
exercise their authority in enforcing measures essentially alien to the
native constitution, their prestige over the individual lapses. They
become mere puppets, and indirect rule breaks down. I hope to
make clear what the native constitution is, and what is meant by
ruling on “native lines.” The difficulties of improving and purifying
when required a native administration, without impairing its general
efficiency, are always considerable. In Northern Nigeria they are, for
several reasons, peculiarly so. If the result, so far, has shown the
wisdom of the original conception, it has been due to the
determination and tact of the senior Political Residents, and to the
excellence of the native material. Our task has been furthered by the
administrative capacities of the Fulani Emirs. Some were, indeed,
found unfit and had to be removed, but the majority are increasingly
showing themselves not only capable but quite indispensable to the
work of government.
It would, however, be mischievous to conceal the fact that indirect
rule in the proper sense of the term, i.e. involving the preservation of
native law and custom, has to bear, in West Africa, the brunt of
constant and insidious assaults on the part of interested, or
prejudiced, or ill-informed opinion. This opposition is often quite
honest and quite easy to understand if the conditions are grasped. It
is important they should be grasped. Indirect rule is an obstacle to
employment and promotion in some branches of the service. It
restricts the scope of secretarial, judicial, police and military
activities. It robs the educated native barrister trained in English law,
and the educated native clerk, of a field for the exercise of their
professions. It checks the European capitalist in a hurry to push on
“development.” The missionary is apt to regard it as a stumbling-
block to Christian propaganda. Finally, there is the type of European
who is racially biased against the retention of any sort of control by
the native in his own country. Indirect rule, therefore, has very many
enemies, and it cannot have too many friends among the thinking
public at home. So far as Northern Nigeria is concerned, strenuous
efforts will have to be put forward by all who are convinced of the
necessity of upholding indirect rule therein, when the amalgamation
of the two Protectorates is taken in hand. That time cannot be far
distant and the wind which blows from the south is charged with
many hostile particles. There would seem, then, to be solid reasons
for the public to appreciate the conditions, at once severely practical,
and of the moral order, which make the continuation of the existing
policy necessary to the welfare of the Northern Protectorate.
Let us first consider geographical verities and ways and means.
Northern Nigeria is 255,000 square miles in extent and the territory is
divided into thirteen provinces. Of these provinces, Sokoto, the most
considerable in point of area, is nearly as large as Scotland and
Wales; Bornu is the size of Ireland; Kano is almost as large as
Scotland; Kontagora-Borgu is slightly larger than, and Bauchi and
Muri the size of, Greece; the Niger Province is as extensive as
Servia; Yola is as large as Denmark, and Nassarawa exceeds the
area of Switzerland. It is only by realizing space, by realizing that
months of travel still separate some provinces from others, that the
expense, to say nothing of other considerations, which would be
entailed in gathering up all the administrative threads of such a
territory into the hands of a staff of British officials can be
understood. I have never heard it suggested that the Lords of the
Treasury parted enthusiastically with the meagre sum allotted to
Northern Nigeria. One cannot imagine that their Lordships’
satisfaction would increase if they were presented not with a bill of a
quarter of a million but of two millions. The single Province of Kano,
which under the present system is supervised by seventeen political
officers, and more than pays its own way, would require at least
three hundred officials if direct rule were established, or the prestige
of the Emirs so weakened as to deprive them of all real authority
over the people, and this, exclusive of a swarm of native officials
who could not be done without in any case. That brings me to my
next point. Direct rule would, of necessity, involve an enormous,
directly paid, native staff. For its every action the Government would
be compelled to accept responsibility, and its members would,
perforce, be largely composed of the class of native—the most
undesirable type, it may be added—from which the policemen and
soldiers are now recruited. Putting aside the question of expenditure
altogether, can any sane man, disposed to look the facts squarely in
the face and knowing anything of the country, contemplate with
equanimity the consequences of such a régime? Then, assuming for
purposes of argument the non-existence of these impediments,
where would lie the moral justification, let alone the purely political

You might also like