As this ebook edition doesn't have fixed pagination, the page numbers below are hyperlinked for reference only, based on the printed edition of this book.
Symbols
@asyncio.coroutine
A
AMQP messaging
monitoring 269
Apache Kafka
about 270
consumer, running on console 272, 273
download link 271
publisher, implementing 271, 272
topic, creating 271
used, for building publish/subscribe messaging 270
API endpoints testing
performing 320
test methods, running 323
unit test cases, writing 321
API-first microservices development 6
API properties
API-related exceptions, managing
about 30
default handler override 37
single status code response 30-32
API responses
APIRoute and Request customization
about 297
message body, decrypting 300, 301
message body, encrypting 300, 301
message body, managing 297-300
API services
implementing 27
application deployment, with Docker
containers, creating 374
Docker image, creating 373
Mongo Docker image, using 374
performing 372
requirements.txt file, generating 372
application settings
managing 100
storing, as class attributes 101, 102
storing, in properties file 102-104
arrays
async/await construct
async CRUD transactions, creating with Motor
about 182
asynchronous repository layer, creating 183-185
CRUD transactions, running 185, 186
database connectivity, setting up 182, 183
model layer, creating 183
async CRUD transactions, implementing with SQLAlchemy
about 124
asyncio-compliant database drivers, installing 124
Base class, creating 125
CRUD transactions, running 129, 130
database connectivity, setting up 124, 125
model layer, creating 125
repository layer, building 126-128
session factory, creating 125
asynchronous background tasks
creating 261
multiple tasks, creating 263
asynchronous dependencies
asynchronous path operations
Asynchronous Server Gateway Interface (ASGI) 5
asynchronous Server-Sent Events (SSE)
asynchronous transactions
asynchronous WebSocket
building 275
asynchronous WebSocket endpoint
asyncio 255
async repository, for FastAPI
building, with ODMantic 200
async transactions implementation, with Beanie
CRUD transactions, implementing 198, 199
database connectivity, creating 195, 196
document associations, creating 198
model classes, defining 196, 197
repository transactions, running 200
authentication
built-in middlewares, using for 250, 251
authorization code flow
authorization request, implementing 237, 238
building 236
OAuth2AuthorizationCodeBearer, applying 236, 237
authorization code response
B
background processes
BaseHTTPMiddleware
BaseModel classes
using, for transactions 168-170
Basic authentication
HttpBasicCredentials, applying 214-217
implementing 214
login transaction, executing 217, 218
using 214
Beanie
async transactions, implementing with 195
Beanie ORM 331
Binary JSON (BSON)
about 167
reference link 167
BPMN workflow
simulating 346
built-in middlewares
using, for authentication 250, 251
C
callable class
injecting 50
Celery 263
Celery instance
Celery tasks
about 263
calling 267
creating 266
monitoring 268
worker server, starting 267, 268
class diagram 163
client-side service discovery
Command and Query Responsibility Segregation (CQRS) 155
common gateway
creating 82
configurable containers
using 69
container 374
Content-Language 40
cookies
about 23
coroutines
async/await construct, using 256, 257
asynchronous transactions, designing 258-260
@asyncio.coroutine, applying 255, 256
HTTP/2 protocol, using 261
implementing 254
used, for creating Observable 278-280
coroutine switching
applying 254
CORS mechanism
CQRS design pattern
about 156
applying 156
command and query classes, creating 156, 157
command and query handlers, creating 157, 158
handler interfaces, defining 156
CRUD transactions, creating with MongoFrames
database connection, creating 206
document association, creating 208
model layer, creating 207, 208
repository layer, applying 211
repository layer, creating 208-210
CRUD transactions, creating with SQLAlchemy
Base class, defining 112
database connection, setting up 110, 111
database driver, installing 110
JOIN queries, creating 119, 120
model layer, building 112, 113
repository layer, implementing 116
session factory, initializing 111
table relationships, mapping 113-115
tables, creating 123
CRUD transactions implementation, with MongoEngine
CRUD transactions, running 194, 195
custom serialization and deserialization, applying 190
database connection, establishing 187
document association, creating 189, 190
embedded documents, managing 192-194
model layer, building 187, 188
CSV report
cycle 29
D
database connectivity
database environment
DataFrames
data models
about 62
decomposition pattern
dependables
dependencies
caching 53
dependency function
injecting 49
dependency injection (DI)
applying 48
ways, exploring 56
Dependency Injector
containers 70
container types 70
multiple-container setup 72, 73
providers module 70
using 69
Depends() parameter types
development environment
Digest authentication
hashed credentials, generating 219
HTTPAuthorizationCredentials, using 220, 221
implementing 214
login transaction, executing 221, 222
user credentials, passing 219
using 218
Django 377
Django applications
integrating, with Flask sub-applications 377-379
Docker Compose
advantages 376
using, for deployment 375, 376
Dockerization 372
domain modeling approach
applying 94
domain model layer 95
domain models
E
endpoint
Error500Model 319
event handlers 283
events
customizing 283
exception handlers
F
factory method pattern
about 100
using 100
FastAPI
about 4
form parameters, handling 22, 23
parameter type declaration 10
types of parameters, mixing 16, 17
feedback module 26
Flask 377
Flask applications
integrating, with Django sub-applications 377-379
Flower 268
framing 207
G
geographical information systems (GIS) 325
GINO 130
GINO, using for async transactions
about 131
CRUD transactions, implementing 135-138
CRUD transactions, running 138, 139
database connection, establishing 131
database driver, installing 131
model layer, building 131, 132
table relationships, mapping 132-134
Graphene 350
GraphQL
about 350
CRUD transactions, running 353-355
mutations 350
queries 350
query transactions, implementing 353
record delete 352
record insertion 350
record update 351
setting up 350
H
HTTP/2 protocol
using 261
httpx module
about 91
I
Integrated Development Environment (IDE) 4
Inversion of Control (IoC) principle
applying 48
J
JSON-compatible types
JSON Object Signing and Encryption (JOSE) 228
JWT tokens
access_token, creating 228
applying 228
login transaction, creating 229, 230
secret key, generating 228
secured endpoints, accessing 230, 231
K
Kafka broker
running 271
Keycloak 240
Keycloak client 241
Keycloak realm 240
L
laboratory information management systems (LIMS) 325
Lagom module
container 74
FastAPI integration 74
using 74
layers
creating 94
linear, and non-linear inequalities
linear expressions
logging mechanism
centralizing 86
logging middleware
Loguru module
M
main.py file
message-driven transactions
building, with RabbitMQ 269
microservice configuration
managing 100
microservice ID
middleware
about 295
applying, to filter path operations 45, 46
mocking 323
model layer 63
model layer, PyMongo driver
BaseModel classes, using for transactions 168-170
document associations, establishing 168
Pydantic @dataclass, using to query documents 171-174
Pydantic validation, using 170, 171
module components
importing 28
MongoDB
URL 162
MongoDB Compass 162
MongoEngine
CRUD transactions, implementing with 186
MongoFrames
CRUD transactions, creating with 206
Motor
async CRUD transactions, creating with 182
N
native coroutine 256
Neo4J database
setting 356
Neo4J graph database
CRUD transactions, creating 356-360
utilizing 355
nested dependencies
nested model approach 18
Netflix Eureka service registry
about 369
NGINX
using, as API Gateway 376
non-linear expressions
solving 333
NumPy
about 334
linear system operations 335, 336
O
OAuth2 222
Object Document Mapping (ODM) 186
Object Relational Model (ORM) framework 97, 110
objects
converting, to JSON-compatible types 38, 39
Observable
creating, with coroutines 278-280
ODMantic, used for building async repository for FastAPI
about 200
CRUD transactions, implementing 202-204
CRUD transactions, running 205, 206
database connection, creating 201
document association, establishing 202
model layer, creating 201, 202
Online Recipe System
OpenAPI 3.x specification
about 311
applying 311
Form directive, using 318, 319
internal code base properties, using 314, 315
OpenAPI schema definition, extending 311-314
Path() directive, using 317, 318
Query() function, using 316
OpenID Connect specification
applying 240
Auth0, integrating with FastAPI 249
HTTPBearer, using 240
Keycloak client, setting 241
Keycloak environment, configuring 240
Keycloak environment, installing 240
Keycloak, integrating with FastAPI 245-247
Keycloak realm, setting 240
Okta, integrating with FastAPI 250
roles, assigning to clients 243
token verification, implementing 247, 248
user permissions, creating through scopes 244
user roles, creating 242
users, creating 242
open tracing mechanisms
ORJSONResponse
using 310
P
packages 26
pandas module
password-based authentication
implementing 222
login transaction, executing 223-226
OAuth2PasswordBearer, using 222, 223
OAuth2PasswordRequestForm, using 222, 223
python-multipart module, installing 222
path operations
filtering, by applying middleware 45, 46
payload 228
PCCS project
setting up 326
Peewee 148
Peewee, used for building repository
about 148
CRUD transactions, implementing 153-155
CRUD transactions, running 155
database connection, creating 149, 150
database driver, installing 148
domain layer, creating 150-153
Piccolo ORM
data models, creating 329, 330
repository layer, implementing 330
Pony ORM 140
Pony ORM, using for repository layer
about 140
CRUD transactions, implementing 144-148
database connectivity, establishing 141
database driver, installing 140
model classes, defining 141-144
repository transactions, running 148
tables, creating 148
projects
huge projects, organizing 26, 27
huge projects, structuring 26, 27
organizing, based on dependencies 62
Prometheus 364
psycopg2 110
publish/subscribe messaging
building, with Apache Kafka 270
pydantic module 5
Pydantic @dataclass
using, to query documents 171-174
Pydantic validation
using 170
PyMongo driver, applying for synchronous connections
database connectivity, setting up 165, 166
model layer, building 166, 167
repository layer, implementing 174
pytest command 323
python-multipart module 5
Python Virtual Machine (PVM) 69
Q
R
RabbitMQ
about 269
AMQP messaging, monitoring 269
Celery instance, creating 269
download link 269
used, for building message-driven transactions 269
reactive programming
about 277
API resources, accessing 281-283
applying, in tasks 277
background process, creating 280, 281
Observable, creating with coroutines 278
repository factory methods 66, 67
repository layer pattern
repository layer, PyMongo driver
CRUD transactions, building 174-177
document association, creating 177-179
implementing 174
repository-service layers
model layer 63
repository factory methods 66, 67
requests module
about 92
response management
Jinja2 template engine, setting up 307
ORJSONResponse, using 310
static resources, setting up 307
template layout, creating 308, 309
UJSONResponse, using 310
response types
EventSourceResponse 302
FileResponse 302
HTMLResponse 304
JsonResponse 302
PlainTextResponse 302
RedirectResponse 302
REST API
REST API services
S
scope-based authorization
creating 231
login transaction, implementing 233, 234
OAuth2 class, customizing 231, 232
permission dictionary, building 232, 233
scopes, applying to endpoints 234-236
secret key 228
server response
managing 10
Server-Sent Events (SSE) 273, 302
service layer pattern
service registry
setting up 369
session management
about 288
applying 288
BaseHTTPMiddleware, customizing 293-295
session data, managing 291, 292
sessions, removing 292
user sessions, creating 288-290
shutdown event
defining 284
SQLAlchemy
about 110
async CRUD transactions, implementing 124
CRUD transactions, creating 110, 116-118
starlette module 5
startup event
about 283
defining 283
statistical analysis
status code 31
sub-applications
submodules
mounting 81
Swagger/OpenAPI dashboard 9
symbolic computations
implementing 331
symbolic expressions
synchronous connections
PyMongo driver, applying for 165
T
tasks 257
third-party containers
using 69
thread pool 254
thread switching 254
timing attack 215
type hints 10
U
UJSONResponse
using 310
user requests
managing 10
V
virtual environment
benefits 362
visit module 26
Visual Studio Code (VS Code)
about 4
URL 4
W
WebSocket client
X
XLSX report
Z
Zookeeper server
running 271
18.117.186.92