100% found this document useful (1 vote)
13 views

Download full Web API Development for the Absolute Beginner: A Step-by-step Approach to Learning the Fundamentals of Web API Development with .NET 7 1st Edition Irina Dominte ebook all chapters

The document promotes various ebooks available for download on ebookmass.com, including titles on Web API development, Kubernetes fundamentals, and API testing with Postman. It highlights the features of instant digital products in multiple formats and provides links to individual ebooks. Additionally, it includes details about the book 'Web API Development for the Absolute Beginner' by Irina Dominte, emphasizing its educational approach to learning Web API fundamentals with .NET 7.

Uploaded by

oleasismanip
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
13 views

Download full Web API Development for the Absolute Beginner: A Step-by-step Approach to Learning the Fundamentals of Web API Development with .NET 7 1st Edition Irina Dominte ebook all chapters

The document promotes various ebooks available for download on ebookmass.com, including titles on Web API development, Kubernetes fundamentals, and API testing with Postman. It highlights the features of instant digital products in multiple formats and provides links to individual ebooks. Additionally, it includes details about the book 'Web API Development for the Absolute Beginner' by Irina Dominte, emphasizing its educational approach to learning Web API fundamentals with .NET 7.

Uploaded by

oleasismanip
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

Download the Full Ebook and Access More Features - ebookmass.

com

Web API Development for the Absolute Beginner: A


Step-by-step Approach to Learning the Fundamentals
of Web API Development with .NET 7 1st Edition
Irina Dominte
https://ebookmass.com/product/web-api-development-for-the-
absolute-beginner-a-step-by-step-approach-to-learning-the-
fundamentals-of-web-api-development-with-net-7-1st-edition-
irina-dominte/

OR CLICK HERE

DOWLOAD NOW

Download more ebook instantly today at https://ebookmass.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Kubernetes Fundamentals: A Step-by-Step Development and


Interview Guide 1st Edition Himanshu Agrawal

https://ebookmass.com/product/kubernetes-fundamentals-a-step-by-step-
development-and-interview-guide-1st-edition-himanshu-agrawal/

ebookmass.com

Kubernetes Fundamentals: A Step-by-Step Development and


Interview Guide 1st Edition Himanshu Agrawal

https://ebookmass.com/product/kubernetes-fundamentals-a-step-by-step-
development-and-interview-guide-1st-edition-himanshu-agrawal-2/

ebookmass.com

Postman for API Testing: A Beginner's Guide: Learn to test


APIs like a pro with Postman with Real-World Examples and
Step-by-Step Guidance Parvin
https://ebookmass.com/product/postman-for-api-testing-a-beginners-
guide-learn-to-test-apis-like-a-pro-with-postman-with-real-world-
examples-and-step-by-step-guidance-parvin/
ebookmass.com

Membangun Kemandirian Petani Garam melalui Literasi


Keuangan dan Perencanaan Keuangan Keluarga untuk Produksi,
Akses Modal, dan Informasi Pasar Dr. Didin Fatihudin
https://ebookmass.com/product/membangun-kemandirian-petani-garam-
melalui-literasi-keuangan-dan-perencanaan-keuangan-keluarga-untuk-
produksi-akses-modal-dan-informasi-pasar-dr-didin-fatihudin/
ebookmass.com
Earl's Well That Ends Well Jane Ashford

https://ebookmass.com/product/earls-well-that-ends-well-jane-
ashford-2/

ebookmass.com

Claimed By The Wolf Lord: An Enemies to Lovers Paranormal


Romance (Lunar Bride Book 3) Skye Wilson

https://ebookmass.com/product/claimed-by-the-wolf-lord-an-enemies-to-
lovers-paranormal-romance-lunar-bride-book-3-skye-wilson/

ebookmass.com

Crossed Skis Carol Carnac

https://ebookmass.com/product/crossed-skis-carol-carnac/

ebookmass.com

Functional Assessment and Program Development 3rd Edition,


(Ebook PDF)

https://ebookmass.com/product/functional-assessment-and-program-
development-3rd-edition-ebook-pdf/

ebookmass.com

A Thousand Vermilion Stars Patricia Logan

https://ebookmass.com/product/a-thousand-vermilion-stars-patricia-
logan/

ebookmass.com
Oxford IB Diploma Programme IB Mathematics: analysis and
approaches, Standard Level, Print and Enhanced Online
Course Book Pack (English B for Ib Diploma Programme) Paul
La Rondie
https://ebookmass.com/product/oxford-ib-diploma-programme-ib-
mathematics-analysis-and-approaches-standard-level-print-and-enhanced-
online-course-book-pack-english-b-for-ib-diploma-programme-paul-la-
rondie/
ebookmass.com
Web API
Development for
the Absolute
Beginner
A Step-by-step Approach to
Learning the Fundamentals of
Web API Development with .NET 7

Irina Dominte
Web API Development
for the Absolute
Beginner
A Step-by-step Approach
to Learning the Fundamentals
of Web API Development
with .NET 7

Irina Dominte
Web API Development for the Absolute Beginner: A Step-by-step Approach
to Learning the Fundamentals of Web API Development with .NET 7
Irina Dominte
Iasi, Romania

ISBN-13 (pbk): 978-1-4842-9347-8 ISBN-13 (electronic): 978-1-4842-9348-5


https://doi.org/10.1007/978-1-4842-9348-5

Copyright © 2023 by Irina Dominte


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.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal
responsibility for any errors or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Joan Murray
Development Editor: Laura Berendson
Editorial Assistant: Gryffin Winkler
Copy Editor: April Rondeau
Cover image designed by Stefan Schweihofer from Pixabay
Distributed to the book trade worldwide by Springer Science+Business Media New York,
1 New York Plaza, 1 FDR Dr, New York, NY 10004. Phone 1-800-SPRINGER, fax (201) 348-4505,
email [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 information on translations, please e-mail [email protected]; for
reprint, paperback, or audio rights, please e-mail [email protected].
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Print
and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is
available to readers on GitHub.
Paper in this product is recyclable
I dedicate this book to my daughter and to you,
the reader, whether you are trying to learn a
totally different domain or just like to keep
learning new things.
Table of Contents
About the Author��������������������������������������������������������������������������������xv

About the Technical Reviewer����������������������������������������������������������xvii

Acknowledgments�����������������������������������������������������������������������������xix

Introduction���������������������������������������������������������������������������������������xxi

Part I: The Basics�������������������������������������������������������������������������1


Chapter 1: Introducing Web API�����������������������������������������������������������3
What Is an API?�����������������������������������������������������������������������������������������������������3
Categorizing APIs��������������������������������������������������������������������������������������������������4
Types of APIs���������������������������������������������������������������������������������������������������������4
Push/Stream APIs��������������������������������������������������������������������������������������������4
Native APIs�������������������������������������������������������������������������������������������������������5
SDKs����������������������������������������������������������������������������������������������������������������5
REST����������������������������������������������������������������������������������������������������������������5
RPC APIs����������������������������������������������������������������������������������������������������������6
The Look and Feel of Web Apps����������������������������������������������������������������������������7
What Is a WEB API?���������������������������������������������������������������������������������������������13
When to Use WEB API������������������������������������������������������������������������������������������16
The World of Web Applications����������������������������������������������������������������������������17
Summary������������������������������������������������������������������������������������������������������������18

v
Table of Contents

Chapter 2: Introduction to the Web�����������������������������������������������������19


How the Internet Works��������������������������������������������������������������������������������������19
Protocols��������������������������������������������������������������������������������������������������������19
Client–Server Architecture����������������������������������������������������������������������������22
What Is a URL: The Building Blocks���������������������������������������������������������������������23
Schema���������������������������������������������������������������������������������������������������������23
Domain����������������������������������������������������������������������������������������������������������24
Path���������������������������������������������������������������������������������������������������������������25
Query String��������������������������������������������������������������������������������������������������25
Fragment�������������������������������������������������������������������������������������������������������27
Request and Response���������������������������������������������������������������������������������������27
Request���������������������������������������������������������������������������������������������������������27
Response�������������������������������������������������������������������������������������������������������29
Request versus Response�����������������������������������������������������������������������������31
Headers���������������������������������������������������������������������������������������������������������������33
Accept�����������������������������������������������������������������������������������������������������������34
Content-Type�������������������������������������������������������������������������������������������������35
Cache-Control������������������������������������������������������������������������������������������������37
HTTP Methods�����������������������������������������������������������������������������������������������������37
GET����������������������������������������������������������������������������������������������������������������38
POST��������������������������������������������������������������������������������������������������������������38
PUT����������������������������������������������������������������������������������������������������������������40
DELETE����������������������������������������������������������������������������������������������������������40
HEAD��������������������������������������������������������������������������������������������������������������40
OPTIONS��������������������������������������������������������������������������������������������������������41
Idempotent versus Safe Methods������������������������������������������������������������������42

vi
Table of Contents

Status Codes�������������������������������������������������������������������������������������������������������43
1xx – Informational����������������������������������������������������������������������������������������43
2xx – Success�����������������������������������������������������������������������������������������������43
3xx – Redirects����������������������������������������������������������������������������������������������44
4xx – Client Errors�����������������������������������������������������������������������������������������44
5xx – Server Errors����������������������������������������������������������������������������������������46
Cookies���������������������������������������������������������������������������������������������������������������47
Summary������������������������������������������������������������������������������������������������������������49

Chapter 3: Setting Up the Environment����������������������������������������������51


Installing Visual Studio����������������������������������������������������������������������������������������51
Postman��������������������������������������������������������������������������������������������������������������53
What Is Postman?������������������������������������������������������������������������������������������53
Exploring the Postman Interface�������������������������������������������������������������������55
Your First Web API Project�����������������������������������������������������������������������������������59
Creating a Project������������������������������������������������������������������������������������������59
Exploring the Project Structure���������������������������������������������������������������������63
Running the Project���������������������������������������������������������������������������������������68
Issuing Your First Request�����������������������������������������������������������������������������71
Summary������������������������������������������������������������������������������������������������������������73

Chapter 4: Web API: Building Blocks��������������������������������������������������75


Convention Over Configuration���������������������������������������������������������������������������75
MVC���������������������������������������������������������������������������������������������������������������������76
Model�������������������������������������������������������������������������������������������������������������77
View���������������������������������������������������������������������������������������������������������������77
Controller�������������������������������������������������������������������������������������������������������77
The API Request Pipeline������������������������������������������������������������������������������������79

vii
Table of Contents

Controllers & Actions������������������������������������������������������������������������������������������80


Controllers�����������������������������������������������������������������������������������������������������80
Actions�����������������������������������������������������������������������������������������������������������82
Action Return Types���������������������������������������������������������������������������������������83
Model������������������������������������������������������������������������������������������������������������������87
DTO����������������������������������������������������������������������������������������������������������������89
Validating Models������������������������������������������������������������������������������������������89
Using Models�������������������������������������������������������������������������������������������������90
Model Binding�����������������������������������������������������������������������������������������������������91
Middleware���������������������������������������������������������������������������������������������������������92
Using Map������������������������������������������������������������������������������������������������������98
Using MapWhen������������������������������������������������������������������������������������������100
Using UseWhen�������������������������������������������������������������������������������������������101
Routing��������������������������������������������������������������������������������������������������������������102
What Is the Routing Mechanism?����������������������������������������������������������������102
Convention-based Routing��������������������������������������������������������������������������104
Attribute Routing�����������������������������������������������������������������������������������������107
Dependency Injection����������������������������������������������������������������������������������������112
What Is a Dependency?�������������������������������������������������������������������������������113
Types of Dependencies��������������������������������������������������������������������������������114
Dependency Injection Container������������������������������������������������������������������117
Dependency Injection in ASP.NET Web API��������������������������������������������������118
Service Lifetimes�����������������������������������������������������������������������������������������119
Cleaning Up DI Registrations�����������������������������������������������������������������������127
Summary����������������������������������������������������������������������������������������������������������130

viii
Table of Contents

Part II: Implementing an API���������������������������������������������������131


Chapter 5: Getting Started with Web API������������������������������������������133
A Short Introduction to REST�����������������������������������������������������������������������������133
Client–Server�����������������������������������������������������������������������������������������������134
Stateless������������������������������������������������������������������������������������������������������134
Caching��������������������������������������������������������������������������������������������������������135
Uniform Interface�����������������������������������������������������������������������������������������136
Layered System�������������������������������������������������������������������������������������������138
Code on Demand�����������������������������������������������������������������������������������������139
Your First RESTful API���������������������������������������������������������������������������������������139
Introducing CRUD����������������������������������������������������������������������������������������������139
Getting to Know the Project������������������������������������������������������������������������������141
Implementing a GET Request����������������������������������������������������������������������������141
Implementing GET and Using an ID�������������������������������������������������������������������144
Implementing a POST Request�������������������������������������������������������������������������148
Implementing a HEAD Request�������������������������������������������������������������������������153
Implementing a PUT Request����������������������������������������������������������������������������154
Implementing a DELETE Request����������������������������������������������������������������������155
Best Practices for API Design����������������������������������������������������������������������������156
Summary����������������������������������������������������������������������������������������������������������159

Chapter 6: Introducing an ORM��������������������������������������������������������161


What Is an ORM?�����������������������������������������������������������������������������������������������161
Introducing Entity Framework���������������������������������������������������������������������������163
Entity Framework Core Building Blocks������������������������������������������������������164
Configuring Relations Between Entities������������������������������������������������������169

ix
Table of Contents

Ways of Working with a Database���������������������������������������������������������������������174


Database First���������������������������������������������������������������������������������������������175
Model First���������������������������������������������������������������������������������������������������177
What Are Migrations?����������������������������������������������������������������������������������������178
How Do Migrations Work?���������������������������������������������������������������������������179
Installing SQL Management Studio�������������������������������������������������������������������180
Linking Our Project to a Database��������������������������������������������������������������������180
Generate Tables from Our Project����������������������������������������������������������������180
Scaffold Entities from an Existing Database�����������������������������������������������187
Querying Data���������������������������������������������������������������������������������������������������192
Interfaces Used for Query Results���������������������������������������������������������������192
Loading Related Data����������������������������������������������������������������������������������194
Executing Raw SQL�������������������������������������������������������������������������������������195
Summary����������������������������������������������������������������������������������������������������������195

Chapter 7: Getting Organized������������������������������������������������������������197


Splitting Code into Layers���������������������������������������������������������������������������������198
Domain Layer����������������������������������������������������������������������������������������������������201
Data Layer, Implementing a Repository������������������������������������������������������������208
Service Layer����������������������������������������������������������������������������������������������������212
Introducing AutoMapper�����������������������������������������������������������������������������������216
Installing AutoMapper����������������������������������������������������������������������������������218
Wire Everything�������������������������������������������������������������������������������������������������220
Implement SpeakersRepository������������������������������������������������������������������221
Implement SpeakersService�����������������������������������������������������������������������224
Make SpeakersController Changes�������������������������������������������������������������225
Try It Out������������������������������������������������������������������������������������������������������������232
Summary����������������������������������������������������������������������������������������������������������234

x
Table of Contents

Chapter 8: Routing����������������������������������������������������������������������������235
What Is a Route?�����������������������������������������������������������������������������������������������235
Route Templates������������������������������������������������������������������������������������������236
Route Segments������������������������������������������������������������������������������������������237
Route Parameters����������������������������������������������������������������������������������������239
Route Tokens�����������������������������������������������������������������������������������������������240
Route Values������������������������������������������������������������������������������������������������241
Convention-based Routing��������������������������������������������������������������������������������241
Attribute Routing�����������������������������������������������������������������������������������������������242
Route Template Precedence�����������������������������������������������������������������������������246
How to Customize Routing��������������������������������������������������������������������������������247
Route Constraints����������������������������������������������������������������������������������������������248
Creating a Custom Route Constraint�����������������������������������������������������������249
Available Constraints�����������������������������������������������������������������������������������252
Creating Hierarchical Routes����������������������������������������������������������������������������253
Summary����������������������������������������������������������������������������������������������������������260

Chapter 9: Middleware���������������������������������������������������������������������261
Middleware Usage Scenarios���������������������������������������������������������������������������264
Introducing Custom Middleware�����������������������������������������������������������������������265
Create Your Own Middleware to Add Headers��������������������������������������������������267
Making an Extension Method for Our Middleware��������������������������������������������268
Understanding the Security Headers We Added�����������������������������������������������271
X-Content-Type-Options������������������������������������������������������������������������������271
X-Frame-Options�����������������������������������������������������������������������������������������271
X-Permitted-Cross-Domain-Policies�����������������������������������������������������������272
X-XSS-Protection�����������������������������������������������������������������������������������������273
Summary����������������������������������������������������������������������������������������������������������274

xi
Table of Contents

Part III: Beyond Basics������������������������������������������������������������275


Chapter 10: Model Binding���������������������������������������������������������������277
What Is Model Binding?������������������������������������������������������������������������������������277
Model-binding Sources�������������������������������������������������������������������������������279
Attribute Scope��������������������������������������������������������������������������������������������282
Binding-related Attributes���������������������������������������������������������������������������283
Selectively Bind Properties��������������������������������������������������������������������������283
Create a Custom Model Binder�������������������������������������������������������������������������285
Using the Custom ModelBinder�������������������������������������������������������������������������291
Value Providers�������������������������������������������������������������������������������������������������293
When to Use a Value Provider����������������������������������������������������������������������295
Implement a Custom Value Provider������������������������������������������������������������296
Value Provider Factory��������������������������������������������������������������������������������������299
Apply the Value Provider Globally����������������������������������������������������������������301
Apply the Value Provider Selectively Using an Attribute������������������������������301
Summary����������������������������������������������������������������������������������������������������������303

Chapter 11: Versioning the API���������������������������������������������������������305


Versioning-related Libraries������������������������������������������������������������������������������307
Getting Started��������������������������������������������������������������������������������������������308
Preparing the Project�����������������������������������������������������������������������������������308
API Version Options�������������������������������������������������������������������������������������317
Ways of Versioning��������������������������������������������������������������������������������������������319
Versioning in QueryString����������������������������������������������������������������������������320
Versioning in Headers����������������������������������������������������������������������������������322
Versioning with Media Types�����������������������������������������������������������������������324
Versioning in the URL Path��������������������������������������������������������������������������325
Combining Versioning Strategies�����������������������������������������������������������������328

xii
Table of Contents

General Rules about Versioning������������������������������������������������������������������������329


Deprecating Versions����������������������������������������������������������������������������������������330
Summary����������������������������������������������������������������������������������������������������������331

Chapter 12: Documenting the API����������������������������������������������������333


Introducing OpenAPI�����������������������������������������������������������������������������������������333
Introducing Swashbuckle���������������������������������������������������������������������������������335
Working with Swashbuckle�������������������������������������������������������������������������������336
Documentation Steps����������������������������������������������������������������������������������������337
Define Supported Request Content Types���������������������������������������������������337
Define the Possible Status Codes����������������������������������������������������������������338
Define the Content Type of the Response����������������������������������������������������340
Describing Endpoints�����������������������������������������������������������������������������������342
API Conventions������������������������������������������������������������������������������������������������347
Creating an API Convention�������������������������������������������������������������������������351
Summary����������������������������������������������������������������������������������������������������������355

Chapter 13: Testing the API��������������������������������������������������������������357


Why Is Testing an API Important?����������������������������������������������������������������������357
Terminology������������������������������������������������������������������������������������������������������358
Test Doubles������������������������������������������������������������������������������������������������359
SUT��������������������������������������������������������������������������������������������������������������359
Mock������������������������������������������������������������������������������������������������������������359
Stub�������������������������������������������������������������������������������������������������������������360
Test Types���������������������������������������������������������������������������������������������������������360
Unit Tests����������������������������������������������������������������������������������������������������������363
Anatomy of a Unit Test���������������������������������������������������������������������������������363
Library Types You Might Encounter�������������������������������������������������������������367

xiii
Table of Contents

Creating Our First Unit Tests�����������������������������������������������������������������������������370


Testing the Controller����������������������������������������������������������������������������������371
Testing a Service�����������������������������������������������������������������������������������������379
Other Useful Attributes��������������������������������������������������������������������������������382
Integration Tests������������������������������������������������������������������������������������������������384
What Is a Fixture?����������������������������������������������������������������������������������������388
Creating a Custom WebApplicationFactory�������������������������������������������������388
Writing an Integration Test��������������������������������������������������������������������������393
Unit versus Integration Tests�����������������������������������������������������������������������������400
Summary����������������������������������������������������������������������������������������������������������400

Index�������������������������������������������������������������������������������������������������403

xiv
About the Author
Irina Dominte(Scurtu) is an independent
consultant and trainer, international
speaker, software architect, Microsoft MVP
for developer technologies, and Microsoft
certified trainer (MCT) with a wealth of
experience. Having taught classes, workshops,
and presentations for over 2,000 hours, Irina is
passionate about coding and keeping abreast
of the latest trends and best practices in
software architecture and .NET.
Twice a year, for five months each time, Irina teaches .NET and
C# to aspiring software developers or people interested in software
development or seeking to expand their knowledge. She is an active
member of the community and has founded the DotNet Iasi User Group
and the dotnetdays.ro conference, where she connects with like-minded
developers who are eager to share their expertise and insights.
Irina is also a prolific blogger, and her website, https://irina.codes,
features a wealth of articles on various coding topics. She decided to write
this book after learning firsthand how much people struggle to grasp new
concepts without proper guidance.

xv
Another Random Document on
Scribd Without Any Related Topics
tunsi, ja joka oli kuin pieni, päivää ennustava valon pilkahdus
tumman yön jälkeen.

Kun ihmiset ensin olivat anastaneet hänen huomionsa, rupesivat


ne vetämään puoleensa häntä. Rotevasta isännästä alkaen
köyhimpään muonarenkiin ja torppariin saakka oppi hän tuntemaan
heidät, ja hänen silmänsä keksi heissä jokaisessa jonkun piirteen,
joka oli hänelle kuin tuttua ja pani hänen sielunsa salaa
myhäilemään ja nauttimaan.

Toisinaan tuntui kuin olisi jotakin jäänyt hänen taakseen iki


päiviksi, ja silloin tunsi hän veressään jonkun kumman kosketuksen,
joka synnytti samalla tuskaa ja nautintoa. Hänen sielunsa nauroi ja
itki yhtaikaa. Eletty itketti häntä, mutta vastassa oleva valon
pilkahdus kirkasti hänen mielensä ja pani hänet tuntemaan jotakin
uutta ja nuorteata, joka antoi elämälle arvoa ja sisällystä. —

Elokuun puolivälissä hankkiutui hän lähtemään. Muuan


odottamaton kirje työnsi hänet paluumatkalle kolmea päivää
aikaisemmin kuin mitä hän oli aikonut. Jo aamusella huomasi hän
mielensä raskaaksi. Kylmä tunne valtasi hänet, kun hän ajatteli
pitkää työvuotta, joka oli hänen edessään kaikkine ilottomuuksineen.
Tämän käytteeksi sitte vielä hänen suhteensa lähimpään
ympäristöön, kaikki se poikinpuolisuus, joka vasite kuului hänen
henkilöönsä ja joka määräsi hänen vähäpätöisimmätkin toimensa
koulun ulkopuolla.

Rattaille asettuessa alkoi sataa. Sattumalta oli Aape saanut


matkatoveriksi kirkonkylään saakka muutaman maanviljelyskoneiden
kauppiaan, joka oli elostellut kylässä pari päivää. Kun he ajoivat
erään pikku kunnaan ohi, joka sijaitsi kylän laiteella ja johon paraikaa
perusteltiin kansakoulun kivijalkaa, virkkoi konekauppias:
— Täällä on kansakoulu tarpeen… ovat niin sivistymättömiä.

Aape melkein sävähti. Sanat koskivat johonkin arkaan kohtaan


hänen rinnassaan. Tuntui kuin olisi hän vilaukselta nähnyt oman
itsensä kaikessa suuruudessaan ja etevyydessään. Häntä aivan kuin
hävetti moinen lausunto. Tuntien mielensä pahoittuneeksi, kietoutui
hän sadevaippaan eikä vaihtanut sanaakaan matkatoverinsa kera
koko pitkän taipaleen kestäessä.

Painostuneessa mielentilassa saapui hän perille. Koulun


puutarhassa tapasi hän opettajattaren, joka oudostelevin silmäyksin
tirkisteli häneen. Moniin aikoihin eivät he olleet vaihettaneet
sanaakaan keskenään, paitse mitä opetus- ja virka-asioihin pakosta
kuului.

— En osannut odottaa, virkkoi opettajatar, kun näki Aapen


suuntaavan askeleensa häntä kohti. Mutta Anni on odottanut.

Anni, jonkun hunningoille joutuneen ammattilaisen vaimo, oli


Aapen taloudenhoitajatar. Kuten vanhanpuoleisten naisten laita
ainakin on, oli hän lujasti kiintynyt isäntäänsä.

— Ja hän liekin ainoa odottaja.

Aape koki hymyillä iloisesti, opettajattaren häntä silmäillessä


kummastuneesti. Pitkähköjen kasvojen ilme näytti myötätuntoiselta;
älykkäät silmät kuvastivat hiljaisia sielun kärsimyksiä; poissa oli
entinen suuruuden ja etevyyden itserakas hohde.

He seisoivat tuokion äänettöminä, sitte Aape virkkoi hillityin äänin:

— Minulla on pyyntö, tärkeä sekä rohkea.


Uteliaisuuden vilkas ele virehti opettajattaren kasvoille.

— Tätä pyyntöäni riensin saattamaan perille, vaikka kesälomaani


oli vielä puoli viikkoa jälellä. Tuosta jo voit arvata, ettei pyyntöni ole
aivan mitätön.

Opettajattaren kasvojen eleet muuttuivat yhä uteliaammiksi.

— En pyydä enempää enkä vähempää kuin sitä, ettet minun


tähteni lähde pois nykyisestä paikastasi.

Opettajattaren posket tummenivat, hän katsoi kenkiensä kärkiin.

— Minä tiedän kaikki, paperisi ovat reilassa, virkaa on yksityisesti


jo tarjottukin sinulle, mutta sinun käy ikäväksi lähteä täältä, sinä
epäröit viime hetkeen saakka, ja nyt minä seison tässä edessäsi ja
pyytelen: luovu koko hankkeesta, jonka alkusyy olen minä.

Aape tarjosi kättään, hän ei tahtonut salata, että kaikki oli hänen
puoleltaan anteeksipyyntiä menneistä. Opettajatar ei ojennettuun
käteen heti tarttunut, sillä hän häiriytyi tuokioksi. Hänen oli vaikea
uskoa, että se mitä hän kuuli, oli totta. Mutta kun hän katsoi Aapeen,
joka surullisen ja kärsivän näköisenä seisoi hänen edessään, kohosi
hänen kätensä.

— Lupaatko luopua?

— Lupaan.

Aapen surullisille kasvoille levisi tyydytyksen ilme.

— Kiitän sinua, virkkoi hän rehellisen lämpöisesti.


Lukuvuoden alettua ei elämä tuntunut erinomaisemmalta kuin
ennenkään, mutta syttyneet voimat tekivät yhä työtään, ja uusi
tulevaisuus hiipi huomaamatta yhä lähemmäksi. Elämä tuntui
toisinaan, silloin kun vanhat muistot eivät piinanneet mieltä,
onnelliselta, ja sen hiljaiset, vaatimattomat värit lämmittivät ja
ihastuttivat.

Syksymmällä joutui avonaiseksi muuan seminaarin


harjoituskoulun opettajanvirka. Aapen sydän riemahti, sillä
suorittamillaan tutkinnoilla oli hän tähdännytkin semmoistakin tointa.
Siinä oli palkka korkeampi, helpompi työ ja näiden kahden edun
lisäksi vielä kolmaskin: kaupunkilaisoloissa oli hyvä tilaisuus kehittyä
sekä ammatillisesti että yleissivistykseen nähden. Tämä seikka juuri
oli painava. Tuntui melkein siltä kuin olisivat elämän sumeat pilvet
äkkiä painuneet pakoon, paljastaen silmän nähdä entistä selkeätä ja
sineätä taivasta, sitä, jota Aape oli tottunut niin mielellään
katselemaan ja joka kuvasti häntä itseään niin kauniina ja
miellyttävänä.

Mutta ensimmäisen huikaisun tyynnyttyä ja lauhduttua viileni mieli


ja sen valtasi katumuksen ja häpeän tunne, kun hän oli taasen
langennut entiseen helmasyntiinsä: itsensä ihailemiseen. Loistavan
kuvan takana, jonka hän kiusauksen yllättäessä oli laatinut, ammotti
entinen, tuttu tyhjyys ja päämäärättömyys, ja samassa kaikki
raukistui siihen määrään, jotta hän saattoi itkeä omalle itselleen.
Raukistumisen mentyä ohi nosti hän taasen päätään ja mittaili
korskeasti sitä maailmaa, joka oli vain luotu häntä ja hänen onneaan
varten.

Tätä taistelua kesti viikkomäärin. Vihdoin olivat voitetut kaikki


lapsellisuudet ja raukkamaisuudet, joita elämän pikku
vastoinkäymiset olivat Aapen ehjään luonteesen iskeneet, hän oli
päättänyt panna paperinsa hakuun ja sanoa samassa hyvästit
nykyiselle huomaamattomalle elämälleen.

Taistelut olivat jo asettuneet, pariin kolmeen päivään ei hän ollut


enää tuntenut häilyväisyyttä eikä äkkinäisiä mielentilan vaihdoksia.

On iltahämärä, Aape istuu työpöytänsä ääressä. Lopetettuaan


jonkun pikku työn, nojaikse hän tuolin selkää vastaan, harailee
tukkaansa ja silmäilee ulos talviseen hämärään, jossa valkoinen
hanki kajastaa niin hauskana. Joku soma kuva syntyy hänen
ajatuksissaan, hänen suunsa vetäytyy hymyyn, hänen silmänsä
hymyilevät yhä makeammin.

Kuva ei ole ensikertainen, mutta sillä on aina väkevä tenhonsa.


Jyrkkäkylkiset kalliot, alavat viljelysmaat, sakeametsäiset kukkulat,
kapean lahden pinta, talot, ihmiset, kaikki muodostavat ehyen
kokonaisuuden, jossa on alkuperäisyyttä, tuoreutta ja soinnukkaita
viivoja.

Äkkiä kuolee hymy Aapen huulilta ja silmistä, joku ajatus


syöksähtää hänen päähänsä, uusi, suuri ja ihmeellinen ajatus, joka
täyttää hänen sydämmensä ja järkensä, ajatuksensa ja tunteensa.
Hän näkee rakenteilla olevan kansakoulutalon, ja silloin tuntuu kuin
huutaisivat sadat voimakkaat äänet hänen korvaansa: sinne, sinne!

Hetkisen on Aape kuin jähmettynyt, mutta sitte hän tuntee


voimakkaat kipinät koko olennossaan.

— Sinne, sinne, toistaa hän, lyöden kädellään hämmästyneesti


otsaansa, kuten ainakin henkilö, jolle suuri salaisuus äkkiä paljastuu.
Hän tuntee ettei se ole satunnainen mielentila eikä pälkähdys, sillä
se kasvaa minuuttien kera yhä valtavammaksi ja täyttää yhä
voimakkaampana koko hänen olentonsa. Vasta nyt hän käsittää,
miksi metsäkylän kuva on leikinnyt hänen ajatuksissaan melkein
koko lukuvuoden. Kesken työtä ja lepoa, kesken surua ja iloa on se
yhäti ja yhäti karannut hänen ajatuksiinsa. Hän on kuvalle hymyillyt,
hän on nauttinut siitä, mutta hän ei ole ymmärtänyt sen tarkoitusta
ennen kuin vasta nyt.

Edellisenä kesänä syttyi hänen veressään joku aines palamaan,


palo on tuntunut polttavammin aina silloin, kun metsäkylä raatajineen
on syöksähtänyt hänen ajatuksiinsa. Se on heimolaisuuden,
verisiteiden kipinä, joka on liekkiin leimahtanut. Metsäkylä koski
salaa hänen vereensä, hänen sielunsa suoniin, sytytti kipinät, laati
liekit.

Sinne, sinne, soi yhä voimakkaammin ja yhä riemukkaammin


Aapen korvissa. Niiden luo, joiden muodostamasta kokonaisuudesta
hän itse oli murtoma, pienoiskuva, joiden elämään hän oli verisiteillä
yhdistetty. Mutta ei suurena eikä etevänä, vaan matalana ja
vähäoppisena. Suohon kaikki etevyys ja lahjakkaisuus, kaikki
korkeammuus. Heidän rinnallaan, heidän ystävänään, veljenään…

Miten laaja työmaa siinä tapauksessa leviääkään hänen eteensä,


kun hän astuu ulos etevyytensä linnoituksesta heidän tasalleen, kun
hän rennoin mielin ja lämpöisin sydämin käy käsiksi tehtäväänsä.

Aape tunsi seisovansa uuden elämänsä partaalla, johon näkyi


hänen tulevaisuutensa, hänen onnensa, ilonsa, huolensa, kaihonsa,
kaikkensa. Niiden keskeltä kohotti päätään elämän ilo eli tyydytys ja
tieto hänen työnsä tärkeydestä. Itsekkäät vaikuttimet, kuten herraksi
pääseminen ja luuloteltu kevyempi työ, olivat kannustaneet häntä
pyrkimään seminaariin, itsekkäät vaikuttimet olivat tähän saakka
aina ohjanneet hänen toimintaansa, opettajan varsinaista
kutsumusta ei hän ollut koskaan tarkemmin punninnut eikä se ollut
hänen ajatuksiinsa kuvastunut, syystä että hän itse oli ollut aina
etualalla sekä hänen pyyteensä, toiveensa, hyvänsä. Mutta tästä
käsin väistyy hän itse syrjään, taustaan. Etualaan astuvat kylän
asukkaat, raatajakansan pojat ja tytöt. Nyt hän vasta käsitti oman
kutsumuksensa suuruuden, käsitys puhkesi sanoiksi, jotka hän,
lyöden kädellä otsaansa, lausui innokkaasti:

— Oi, jos voisin korren vetää ristiin heidän hyväkseen.

<tb>

Sisko kuunteli ihastuksissaan.

— Et usko, miten vaikeita silmänräpäyksiä tuotti minulle pelko, että


jos se onkin valhekuva, joka ei kestä järjen koputuksia. Näet, se
laukahti ajatuksiin niin äkkiä, se iski kuin salama pilvestä. Istuin,
kuten tässä nyt istun, mutta sillä eroituksella etten ajatellut mitään
enkä tuntenut mitään. Yhtäkkiä metsäkylä syöksähtää silmieni eteen,
ja minusta tuntui kuin olisivat sadat torvet toitottaneet korviini: sinne,
sinne… Huumaannun, hurmaannun. On kuin olisivat jotkut kahleet
katkenneet, ja minä olisin odottamattani saavuttanut suuren onnen,
semmoisen onnen, jonka olemassaoloa en siihen saakka osannut
kuvitellakaan. Vaikka tunsin että se oli totta, epäilin vielä sittekin, että
jos se on silmänräpäyksellistä tunnetta, joka hetken hyväilee ja sitte
hylkää. Pelkoni oli turha. Viime kesää viettäessäni koski vereeni joku
voima herättävästi. Minussa on kätkeytyneenä jotakin, joka vaati
vain sytyttävän kipinän, hulmahtaakseen liekkiin.
— Sen kätketyn näin minä vilaukselta jo silloin, kun yhdessä
matkustimme seminaarin pääsytutkintoihin.

— Tosiaanko?

Aape loi Siskoon kiitollisen katseen, ja hänen pitkähköillä


kasvoillaan asusti sama miettiväinen, hieman surullinen ilme, joka
heidän tavatessaan junassa jo oli Siskon silmään pistänyt ja joka
hänen koko olentoonsa loi miellyttävän leiman.

— Milloin hakuaika päättyy?

— Ensi viikolla.

— Mutta jos sattuu käymään niin, ettet pääsekään.

Aape aivan tökertyi, kuten ainakin ihminen, joka äkkiä näkee


tielleen nousevan odottamattoman esteen.

— Se on mahdotonta.

— Miksi?

Siskon nauru rupesi harmittamaan Aapea.

— Te naiset osaatte ottaa huomioon kaikki mahdollisuudet, nauroi


hän sitte, kun harmin tunne ehti mennä ohi. Arvatenkin myöskin
rakkausasioissa.

— Niissäkin, vastasi Sisko kuivan hauskasti.

— Kyllä minä olen varma, ettei ne minua sivuuta.

— Maailmassa sattuu kummempiakin.


— Hm.

— Toisia aina hylätään, toisia hyväksytään. Näes, minä katson


asiaa siltä kannalta, että sinä nyt heti, kun olet parahiksi vasta
löytynyt koko mies, pakenet pois täältä.

Aape vaikeni.

Hakuajan umpeen mentyä odotti hän kutsua maltittomasti, mutta


kun se vihdoin saapui, tunsi hän itsensä onnettomimmaksi ihmiseksi
maailmassa. Hänet valtasi mokoma surumielisyys ja masennus, ettei
sen vertaa ennen eikä jälkeen. Koko hänen elämänsä tuntui
kellistyneen nurin niskoin ja samalla luiskahtaneen iloisilta päivän
rinteiltä alas ikäviin noroihin, joissa on vähäpätöistä ja unettavaa.
Hän oli kuin mikäkin särkynyt sielu, joka vapaaehtoisesti kääntää
selkänsä maailmalle ja kuitenkin itkee sen perään.

Hän oli lopultakin pettänyt oman itsensä ja nuoruutensa korkeat


unelmat. Miksi? Siksi että häneltä puuttui kestävyys. Alottamaan hän
oli kyennyt, mutta hän ei kyennyt viemään perille eikä päättämään.
Hänessä oli voimaa, vaan ei sitkeyttä, rohkeutta, vaan ei
häikäilemättömyyttä, ja siksi hänestä tuli oman itsensä pettäjä,
heikko olento, jota tapaukset viskelivät miten milloinkin lystäsivät.

Miten korkealta hän putosikaan. Mitä hän olikaan uneksinut


takavuosina? Maailma oli hänen edessään täynnä kukkuloita, ja
kukkulat olivat kaikki hänen noustaviaan, niiden laet olivat tasoitetut
juuri häntä varten. Ne kaikin houkuttelivat häntä luokseen ja
sanoivat: nouse minun laelleni, nouse.

Niin menneet vuodet.


Mutta nykyisyys ja tulevaisuus, mitä näköaloja se tarjosi?
Syrjäkylän, jonne ei mikään päivä hänen entisestä maailmastaan
pääse paistamaan ja joka ei kyennyt muuta antamaan kuin
unhoitusta. Siirtyminen sinne oli samaa kuin sanoa hyvästit kaikille
kukkuloille ja kuolla pois itseltään, lahjoiltaan, etevyydeltään. Elää
siellä unhoitettua, huomaamatonta elämää, elää ja vanhettua,
hengen vähitellen kangistuessa vanhoihin muistoihin, katsella
etäisestä soppelosta muiden tähtien nousua ja lentoa sille kaikelle
voi itkeä.

Ja Aape todella itkikin. Hänen mielensä turposi niin raskaaksi, ettei


hän voinut estää silmiään kostumasta, kun kaikki hänen unelmansa
niin äkkiä haihtuivat ja vaihtuivat, kun hänen silmänsä keksi, mikä
hän oli ja mitä varten hän oli. Hän itki lelujensa särkymistä, ja niin
rehellistä oli hänen hetkellinen heikkoutensa, ettei hän surussaan
keksinyt mitään naurettavuuksia. Tulevaisuuden näköala oli niin
toivoton ja synkkä ja siitä löyhkähti semmoinen masennus, että Aape
tunsi koko henkensä murtuneeksi. Nyt vasta hän tunsi, miten paljo
hän rakasti kirkonkylää, sen komeita rakennuksia, teitä ja vilkasta
elämää, nyt vasta hän käsitti, mitä arvon hohdetta se loi hänenkin
olentoonsa. Vaihtaa tämmöinen pikkukaupunki metsäkylään oli
melkein mieletöntä.

— Minä peruutan kaikki, virkkoi Aape tuskissaan ja


toivottomuudessaan.
Ensi huomenna minä peruutan.

Mutta huomissa oli hänen mielensä aivan toisen värinen.


Viimeinen taistelu oli häntä horjautellut, mutta taistelun päätyttyä
seisoi hän jälleen entistä vankempana ja lujempana. Kaikki se mitä
hän taistelun kestäessä oli tuntenut, tuntui huomissa raukkamaiselta,
jopa naurettavaltakin. Vähäpätöisen kutsumuksen suuruus alkoi
jälleen kirkastaa mieltä, laatien rintaan semmoisen lämmön ja
päivänpaisteen, että sen rinnalla kirkonkylät, kunniat ja kohoomiset
kylmenivät ja tummenivat.

Nyt Aape jo käsitti, että hän oli elänyt itsensä ulos entisyydestään.
Nöyryytykset ja kaikki se onnistumattomuus, joka varjon tavoin
seurasi häntä, kun hän yritti näytellä sitä, mitä hän ei todellisuudessa
ollut, olivat hänen huomaamattaan taluttaneet hänet ulos jostakin,
joka ijäksi sulkeutui hänen jälkeensä sekä samalla avanneet hänen
silmänsä ihailemaan ja ymmärtämään vähäpätöisen elämäntehtävän
suuruutta. Sadun haltia oli suudellut häntä pikku kärsimyksillä ja
vastoinkäymisillä ja havahduttanut hänet.

<tb>

Elokuun ilta, kirkonkylä kylpee auringon hohteessa.

Pohjoista kohti suuntautuvaa maantietä myöten vierivät rattaat.


Pieni mies, piippunysä hampaissa ja lakki kallellaan, hoitaa takana
ohjia, etupuolia istuu pitkähkökasvoinen, vakavan näköinen
nuorimies, silmissä mietiskelevä ilme, joka hänen hymyillessäänkin
särkyy vain osaksi. Molemmat ovat vaiti. Maantie poimuttelee ensin
peltojen lävitse, nousee sitte matalilta mailta mäen rinteelle ja
kaartaa siitä pienien viljelysmaitten sivutse synkkää metsää kohti.

— Annin oli ikävä lähteä, lausuu vihdoin mies, sylkäisten tuimasti


sivulleen.

— Naiset ovat aina hellätuntoisempia, arvelee Aape.


— Ja kun piti erota synnyinseudusta, jossa kaikki on tuttua.
Vieraan paikan ihmiset ovat toista kuin oman paikkakunnan.

— Kun tottuu, kyllä menettelee.

— Niinpä niinkin, kun tottuu, siinähän se asia onkin.

Puhelu katkeaa, pieni mies panee paloon uudet tupakit, sylkäisee


tuon tuostakin tuimasti sivulleen sekä nykii ohjaksista hevosta. Sitte
hän rupeaa kertoilemaan nuoruutensa ajoista, miten hän oli jo
vähällä joutua akalliseksi, mutta kun saatiin katovuosi, heitti hän
naimatuumat, ja siihen se kuivui koko homma; hän jäi ijäkseen
yksinäiseksi.

— Ei sitä vanhempana enää…

— Ei.

— Vaikka kyllä ne toiset…

Pieni mies innostui kertomaan veljestään, jolla oli jo kolmas akka.


Aape ei kuunnellut kertojaa aina puolellakaan korvalla, sillä elokuun
kaihoisa ilta painoi hänet jonkinlaiseen surumielisyyteen. Muisto
toisensa jälkeen elpyi hänen ajatuksiinsa. Kaikille niille saattoi sekä
nauraa että itkeä, niiden kaikkien pohjalla oli jotakin tervettä, vaikka
pinta näyttikin sairaalloiselta.

— … tullaan Kuninkaanmäelle, herätti pienen miehen ääni Aapen.

Kuninkaanmäki oli loivasti ylenevä harjanne jylhän metsän


keskessä, ja siihen näkyi pari pikku järveä ja pitäjän kirkko. Mäelle
saavuttua pysäytti Aape hevosen. Pitkän hetken silmäili hän kirkon
valkoista päätyä, joka kaukaa siinti Kuninkaanmäelle. Silmäillessä
yltyi hänen kasvojensa surumielinen ilme väkevämmäksi; nähtävästi
syttyi hänen rinnassaan jotakin katkerata ja haikeata.

— So, annetaan mennä.

Ajettiin edelleen, ja jopas on jylhän taipaleen varrella metsätorppa.


Aivan maantien reunassa on torpan sauna, ja saunasta kuuluu
tuoreiden vihtojen läiskinä. Lähellä olevalla kannokolla istuu nuori
mies punakkana ja höyryävänä. Aapen silmät kiintyvät kannokolla-
istujan vartaloon. Lihakset, hartiat, käsivarret, kaikki ovat niin
komeat, kuin oisivat juuri sinä hetkenä Luojan käsistä lähteneet.

Sauna, vihtojen läiskinä ja kannokolla istuva mies antavat Aapelle


jotakin, antavat runsain käsin ja pyytämättä. Ne muistuttavat siitä
maailmasta, joka tästä käsin on hänen kaikki kaikkensa, josta hän
itsekin on sirpale ja josta eristettynä hän on onnistumaton,
rikkinäinen narri.

Masentavat muistot haihtuvat tuokio tuokiolta, Aapen mieli


seestyy, kun hänen silmiinsä kuvastuu se tulevaisuus, jota kohti hän
oli matkalla.

— Niin, miten velimies jakseleekaan?

Tuo on kuin anteeksipyynti äskeisestä loukkaamattomuudesta.

Se anteeksipyynti kartoittaa kauas kaikki masentavat muistot.


Koko tunne-elämä nuortuu nauttimaan. Pieni mies, joka katovuoden
vuoksi peräytyi naimahommistaan, alkaa vetää puoleensa Aapen
huomion. Mies on hänen väkeään, sitä ehyttä joukkoa, jossa on
luonteita ja luonteiden tuoreutta.
Kun pieni mies rupee kertomaan velimiehen voinnista, kuuntelee
Aape molemmin korvin. Sanat koskevat häneen. Tuntuu kuten ei
olisikaan puhe yhdestä henkilöstä ja perheestä, vaan monesta,
joiden kanssa hän on yhdistetty sielun ja veren siteillä ja joiden
sitkeyden sekä taistelut puutetta vastaan hän tuntee yhtä tarkoin
kuin oman elämänsä.

— … Ja se on velimies ikänsä ollut terve.

— Terveys on hyvä lahja.

Torppa on kadonnut näkyvistä, maantie lähtee loivenemaan


vehmasta noroa kohti.

Metsä humisee juhlallisesti.


TASAINEN MAA.

Keväinen päivä on ehtinyt puoliin. Se alkoi kirkkaudessa,' mutta pian


kasvoi taivaalle ohutta kelmua, jotta toisin hetkin päivän säteet vain
kuultivat keltaisena ja punakkana valostuksena, kykenemättä
palamaan täydellä, ominaisella voimallaan.

Alhaalla ojaksimen takana panee aitaa Hiski, köyhän talon renki.


Päivälliskutsua odottaen on hän jo pari kertaa silmäillyt harmaata,
luuhistunutta rakennusta kohti, näkyisikö nuori vartalo liinaa
liekuttamassa merkiksi, että ruoka odotti syöjäänsä, mutta mitään ei
näkynyt. Harmaja rakennus seisoo raukean ja väsyneen näköisenä
nurmettuneella kalliolla, takanaan joku kapea peltotilkku ja kapea
syvänteen pohja, joka sen eroittaa metsästä, edessään melkein
silmänkantaman laveat vainiot, joiden rannoilta siintää naapurikylän
talot ja rakennukset.

Vasemmalla on kylä, jonka järven rantaa kiertää etäämpänä


rautatielinja. Muudan talo, Ranta-Jussila, on muita komeampi. Se
sijaitsee kahden puutarhan keskessä, se on keskikohdaltaan
kaksikerroksinen ja muistuttaa enemmän hovia kuin talonpojan
asuntoa. Pellon sarat lähtevät suorassa linjassa puutarhan reunasta
järveä kohti, mutta kylän muihin taloihin käsin on maantienpuoleinen
puutarha, jonka uljasrunkoiset, korkealle kohoavat vaahterat näkyvät
jo kauas kulkijan silmään.

Hiski, köyhän talon renki, panee aitaa ja hyräilee. Hyräillessään


silmäilee hän kolmannen kerran väsynyttä rakennusta kohti. Ei näy
ketään tanhualla, mutta uuninpiipusta kohoaa harmaja, sakea savu.

/p Tyttö se katseli ikkunasta pitkin pihlajapuutansa. p/

Joku astelee pellon polkua, joka painuu alas niityille ja etäämpänä


siintävään naapurikylään, astelee joutuisasti, ja kun huomaa Hiskin,
köyhän talon rengin aitaa panemassa, niin tekee pikku mutkan
ojaksimen taakse.

Tulija on Ranta-Jussilan emäntä.

— Hyvää päivää, Hiski, tervehtii se iloisesti.

— Hyvää päivää.

Hiski iskee rautaseipäällä maahan, iskee hurjasti. Hän tuntee


jotakin kummaa riemua. Emännän äänessä ja silmäyksessä huokuu
peittelemättömästi jotakin hillittyä ja kytkettyä, puhutellessaan nuorta
miestä, joka on harvinaisen solakka ja pulska.

— Meidän isäntä käy yhä kivulloisemmaksi, on pakko ottaakseni


renkivouti ensi syksystä.

Emäntä käy yhä lähemmäksi, yhä hurjemmin iskee Hiski


rautaseipäällä maahan. Hän näkee lihavat kasvot, tylleröisen
vartalon, ja hänen kumma riemunsa kasvaa.

— Vai niin.
— Niin aivan, ei saa töitä muuten kuntoon.

Ei suinkaan, ei.

Emäntä on tuokion vaiti, mutta hän ei saa silmiään irti pulskasta


nuoresta miehestä.

Etkö sinä tule meille renkivoudiksi?

Hiski tuntee veren ajautuvan ohimoihinsa, hänen kumma riemunsa


kasvaa, ja samalla aivan kuin polttaa hänen ajatuksiaan joku
pelottava, väkevä, mutta silti ei hän saa evätyksi eikä myönnetyksi.
Silmänräpäyksellisen taistelun kestäessä nousee Eetin, köyhän talon
tyttären kuva hänen silmiinsä, hän on juuri lausumaisillaan jyrkän
kieltonsa, mutta silloin emäntä virkkaa, alentaen äänensä melkein
supatukseksi:

— Ei se meidän isäntä enää kauan elä.

Nuo sanat pirstoivat salaman tavoin Hiskin vastustuskyvyn. Tytön


kuva pakeni hänen silmistään, hän seisoi kuin lumottuna jonkun
pyörryttävän, silmiä häikäisevän mahdollisuuden edessä, joka
näyttihe sitä houkuttelevammalta, mitä asiallisemmin ja järkevämmin
siihen ehti perehtyä.

— Mietihän, Hiski, lausui emäntä mesisuin ja tarjosi kättä


hyvästellessä.

— Sietää miettiä.

Emännän mentyä muisti hän taasen silmäillä köyhää, harmaata


taloa kohti, ja jopa keksivät hänen silmänsä jonkun hulmuttelemassa
tanhualla punakirjavaa liinaa. Se oli Eeti, joka antoi merkin, että
päivällinen oli valmis.

Hiski lähti.

Kaksi iloista, harmaata silmää ja naurava suu kohtasi hänet


portailla. Hän oli ennen katsonut niihin mielellään, nyt hän oli niitä
tuskin huomaavinaankaan.

— Tänään ollaan myöhäisiä, kävi kahvivieraita… mutta mikä sinun


on?…

Harmaissa silmissä kuvastui arka kummastus, suu vetäytyi


vakavaksi.

— Oletko suuttunut minulle?

— Mistä minä olisin suuttunut?

Äänessä värähti kärsimättömyys, mutta se jäi tytöltä


huomaamatta. Hänen silmiinsä nousi jälleen entinen ilon loiste, hän
ei huomannut että Hiski vaikeni koko syöntiajan, hänen
pälpättäessään tärkeitä ja joutavia.

— Hyvä, kun saadaan vahva aita Untipeltoa vastaan, jonka Ranta-


Jussilan elukat ovat melkein joka kesä peitonneet puti puhtaaksi.

— Elukanko syy? Kun ei ole aitaa pahaistakaan.

Hiskin äänessä ja kasvojen eleissä, vaikka hän koki näyttää


nauravalta, oli jotakin pilkallista ja halveksivaa, joka koski tyttöön.

— Eihän toki, mutta onhan lupa puhua.


Eeti rupesi vakoilemaan pöydässäistujaa. Tämä ei kertaakaan
katsonut häneen. Toisin silmänräpäyksin sulivat kasvojen ilmeet
pehmeiksi ja hymyileviksi, mutta äkkiä ne vaihtuivat johonkin
tuskastuttavaan, joka tuokiossa saattoi koveta sydämmettömyyden
ilmeeksi. Kauniit kasvot näyttivät silloin vastenmielisiltä, niissä
kuvastui jotakin alhaista ja rumentavaa, jota ei Eeti milloinkaan
ennen ollut niissä keksinyt, ja joka vaikutti häneen tummentavasti.

Päivällisen jälestä oli Hiskin tapana polttaa pesällinen tupakkia ja


polttamisen kera nauratella tyttöä, mutta tänään ei hän tehnyt
kumpaakaan. Syötyään paiskasihe hän suoraan sänkyyn, nukkui
tunnin raskaasti ja sitte haukotellen ja selkäänsä ojennellen asteli
ovesta ulos, edes vilkaisematta tuvan perille.

Eeti katseli ikkunasta hänen jälkeensä. Jotakin oli tapahtunut.


Hiski ei ollut sama kuin aamiaisen jälestä lähtiessään Untipellon
aitaa panemaan. Ei ollut…

Iloton kesä kului vitkaan. Eetin ja Hiskin väliin kasvoi kiusallinen


sietämättömyys, joka toiselta puolen oli vaiston herättämää ja
johtamaa epäilystä sekä salaista vakoilemista, toiselta puolen
kylmää harkitsemista, asianhaarojen ja mahdollisuuksien
punnitsemista.

Sattui sentään viikon kestävä katkelma. Joku häilyväisyyden tunne


pääsi valtaan rengissä, hän oli toisin hetkin yhtä valkea ja iloinen
kuin taloon tullessaankin. Mutta sitä kesti vain viikon. Eräänä
elokuun iltana oli hän jälleen kylmä ja nyreä. Eeti alkoi vainuta, että
kaiken takana piili jotakin ylen tärkeätä, jonka ratkaisu ei voinut olla
kovin kaukana.
— Sinä et enää näe lähellesi, virkkoi hän muutamana sunnuntai-
aamuna
Hiskille, kun tämä silmää luomatta häneen meni ohitse.

— Olisi ehkä parempi, kun ei näkisi minnekään, vastasi Hiski


kuivan järkevästi.

Tämän jälestä eivät he enää vaihtaneet sanaa, joka olisi


kosketellut entisiin toiveisiin. Pyhäinpäivästä muutti Hiski
renkivoudiksi Ranta-Jussilaan, jonka isäntä makasi
kykenemättömänä vuoteellaan, vaikka järki olikin selvässä
toiminnassaan.

Renkivoutina-oloa kesti kolme vuotta, ja ne vuodet tuntuivat


lyhyiltä kuin kesäinen yö. Ihmisten silmät eivät mitään keksineet,
mutta isäntä, joka makasi kykenemättömänä vuoteellaan, aavisti
kaikki. Se kutsutti kerran kamariinsa renkivoudin ja virkkoi kesken
puhelua:

— Katsohan minun silmiini.

Hiski yritti katsoa.

— Katsohan oikein suoraan.

Hiski terästi luontoaan ja katsoi, mutta tunsi samalla, miten


punaveren kuumat nousivat hänen poskiinsa. Isännän suu vetäytyi
silloin omituiseen hymyyn, jossa kuvastui sääliä ja inhoa, ehkä sääliä
enimmän.

Kolmen vuoden takaa kuoli isäntä, jättämättä lapsia jälkeensä.


Leski ja renkivouti menivät naimisiin. Ranta-Jussilan talo oli
ensimainitun perintö, vainaja oli tullut vävyksi taloon, kuten
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookmass.com

You might also like