Index

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

applying 255, 256

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

dependencies, mocking 321-323

performing 320

test methods, running 323

unit test cases, writing 321

API-first microservices development 6

API properties

checking 364, 365

API-related exceptions, managing

about 30

custom exceptions 34-36

default handler override 37

HTTPException, raising 33, 34

multiple status codes 32, 33

single status code response 30-32

API responses

managing 39-41

APIRoute and Request customization

about 297

form, managing 297-300

JSON data, managing 297-300

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

creating 334, 335

async/await construct

using 256, 257

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

coroutines, using 261, 262

creating 261

multiple tasks, creating 263

asynchronous dependencies

injecting 55, 56

asynchronous path operations

using 43, 44

Asynchronous Server Gateway Interface (ASGI) 5

asynchronous Server-Sent Events (SSE)

implementing 273, 274

asynchronous transactions

designing 258-260

asynchronous WebSocket

building 275

asynchronous WebSocket endpoint

implementing 275, 276

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

implementing 238, 239

B

background processes

creating 41, 42

BaseHTTPMiddleware

customizing 293-295

BaseModel classes

using, for transactions 168-170

Basic authentication

HttpBasic, applying 214-217

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

designing 346, 347

implementing 348-350

simulating 346

built-in middlewares

using, for authentication 250, 251

C

callable class

injecting 50

Celery 263

Celery instance

configuring 264, 265

creating 264-269

Celery tasks

about 263

calling 267

creating 266

monitoring 268

worker server, starting 267, 268

class diagram 163

client-side service discovery

implementing 370, 371

Command and Query Responsibility Segregation (CQRS) 155

common gateway

creating 82

configurable containers

using 69

container 374

Content-Language 40

cookies

about 23

managing 23, 24

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

using 261, 262

coroutine switching

applying 254

CORS mechanism

managing 295-297

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

handlers, accessing 158-160

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

about 110, 116-118

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

transactions, running 120-122

CRUD transactions implementation, with MongoEngine

about 190, 191

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

generating 338-342

cycle 29

D

database connectivity

preparing for 108, 109

database environment

setting up 162-164

DataFrames

creating 334, 335

data models

about 62

plotting 342-346

decomposition pattern

applying 78, 79

default parameters 14, 15

dependables

scoping 75, 76

dependencies

caching 53

dependency function

injecting 49

dependency injection (DI)

applying 48

on main.py 61, 62

on path operators 57, 58

on routers 58-61

on services 56, 57

ways, exploring 56

Dependency Injector

containers 70

container types 70

FastAPI integration 71, 72

multiple-container setup 72, 73

providers module 70

using 69

Depends() parameter types

declaring 54, 55

development environment

setting up 4, 5

Digest authentication

hashed credentials, generating 219

HTTPAuthorizationCredentials, using 220, 221

HTTPDigest, 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

identifying 95-97

E

endpoint

implementing 82, 83

Error500Model 319

event handlers 283

events

customizing 283

exception handlers

applying 84, 85

F

factory method pattern

about 100

using 100

FastAPI

about 4

configuring 5, 6

cookies, managing 23, 24

default parameters 14, 15

form parameters, handling 22, 23

initializing 5, 6

optional parameters 15, 16

parameter type declaration 10

path parameters 10-12

query parameters 12, 13

request body 17-19

request headers 19, 20

response data 20, 21

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

tables, creating 139, 140

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

using 91, 92

I

Integrated Development Environment (IDE) 4

Inversion of Control (IoC) principle

applying 48

J

JSON-compatible types

objects, converting to 38, 39

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

solving 333, 334

linear expressions

solving 332, 333

logging mechanism

centralizing 86

logging middleware

building 88-90

Loguru module

utilizing 86-88

M

main.py file

implementing 29, 30

message-driven transactions

building, with RabbitMQ 269

microservice configuration

managing 100

microservice ID

evaluating 83, 84

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

building 166, 167

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

building 51-53

nested model approach 18

Netflix Eureka service registry

about 369

setting up 371, 372

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

project structure 68, 69

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

implementing 365-369

optional parameters 15, 16

ORJSONResponse

using 310

P

packages 26

pandas module

applying 336, 337

password-based authentication

endpoints, securing 226, 227

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

path parameters 10-12

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

tables, creating 150-153

Piccolo ORM

data models, creating 329, 330

repository layer, implementing 330

using 326-329

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

transactions, running 179-182

pytest command 323

python-multipart module 5

Python Virtual Machine (PVM) 69

Q

query parameters 12, 13

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 62-66

repository layer pattern

building 97-100

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

repository layer 64, 66

REST API 67, 68

service layer 67, 68

request body 17-19

request headers 19, 20

requests module

about 92

using 92, 93

response data 20, 21

response management

Jinja2 template engine, setting up 307

ORJSONResponse, using 310

responses, selecting 302-306

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

StreamingResponse 302-304

REST API

about 6, 67, 68

designing 6-8

implementing 6-8

REST API services

consuming 90, 91

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 62, 67, 68

service layer pattern

building 97-100

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

performing 337, 338

status code 31

sub-applications

creating 80, 81

submodules

mounting 81

Swagger/OpenAPI dashboard 9

symbolic computations

implementing 331

symbolic expressions

creating 331, 332

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

setting up 362-364

visit module 26

Visual Studio Code (VS Code)

about 4

URL 4

W

WebSocket client

implementing 276, 277

X

XLSX report

generating 338-342

Z

Zookeeper server

running 271

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.117.186.92