Appendix_A._Granular_queries_with_GraphQL
Appendix_A._HTTP-native_APIs_with_REST
Appendix_A._RPC_strikes_again_Fast_exchanges_over_gRPC
Appendix_A._SOAP_and_the_emergence_of_API_standards
Appendix_A._Types_of_web_APIs_and_protocols
Appendix_B._Managing_an_API_s_life_cycle
Appendix_B._Managing_the_life_cycle_of_your_APIs
Appendix_C._API_authorization_using_an_identity_provider
Appendix_C._Authorizing_requests_in_the_Swagger_UI
Appendix_C._Using_the_PKCE_authorization_flow
Appendix_C._Using_the_client_credentials_flow
Chapter_1._Challenges_of_microservices_architecture
Chapter_1._Introducing_documentation-driven_development
Chapter_1._Introducing_the_CoffeeMesh_application
Chapter_1._Summary
Chapter_1._What_are_microservice_APIs
Chapter_1._What_are_web_APIs
Chapter_1._Who_this_book_is_for_and_what_you_will_learn
Chapter_2._Adding_an_in-memory_list_of_orders_to_the_API
Chapter_2._A_basic_API_implementation
Chapter_2._High-level_architecture_of_the_orders_application
Chapter_2._Implementing_data_validation_models_with_pydantic
Chapter_2._Implementing_the_API_endpoints
Chapter_2._Marshalling_and_validating_response_payloads_with_pydantic
Chapter_2._Summary
Chapter_2._Validating_request_payloads_with_pydantic
Chapter_3._Decomposition_by_business_capability_vs._decomposition_by_subdomain
Chapter_3._Designing_microservices
Chapter_3._Microservices_design_principles
Chapter_3._Service_decomposition_by_business_capability
Chapter_3._Service_decomposition_by_subdomains
Chapter_3._Summary
Chapter_4._Analyzing_the_maturity_of_an_API_with_the_Richardson_maturity_model
Chapter_4._Architectural_constraints_of_REST_applications
Chapter_4._Designing_API_payloads
Chapter_4._Designing_URL_query_parameters
Chapter_4._Hypermedia_as_the_engine_of_application_state
Chapter_4._Principles_of_REST_API_design
Chapter_4._Structured_resource_URLs_with_HTTP_methods
Chapter_4._Summary
Chapter_4._Using_HTTP_status_codes_to_create_expressive_HTTP_responses
Chapter_5._Anatomy_of_an_OpenAPI_specification
Chapter_5._Creating_generic_responses
Chapter_5._Defining_the_authentication_scheme_of_the_API
Chapter_5._Documenting_API_responses
Chapter_5._Documenting_REST_APIs_with_OpenAPI
Chapter_5._Documenting_URL_query_parameters
Chapter_5._Documenting_request_payloads
Chapter_5._Documenting_the_API_endpoints
Chapter_5._Refactoring_schema_definitions_to_avoid_repetition
Chapter_5._Summary
Chapter_6._Building_REST_APIs_with_Python
Chapter_6._Implementing_an_in-memory_list_of_schedules
Chapter_6._Implementing_payload_validation_models_with_marshmallow
Chapter_6._Implementing_the_API_endpoints
Chapter_6._Initializing_the_web_application_for_the_API
Chapter_6._Introducing_flask-smorest
Chapter_6._Overriding_FastAPI_s_dynamically_generated_specification
Chapter_6._Overriding_flask-smorest_s_dynamically_generated_API_specification
Chapter_6._Overview_of_the_kitchen_API
Chapter_6._Summary
Chapter_6._URL_query_parameters_for_the_orders_API
Chapter_6._Validating_URL_query_parameters
Chapter_6._Validating_data_before_serializing_the_response
Chapter_6._Validating_payloads_with_unknown_fields
Chapter_7._Implementing_the_business_layer
Chapter_7._Implementing_the_database_models
Chapter_7._Implementing_the_repository_pattern_for_data_access
Chapter_7._Implementing_the_unit_of_work_pattern
Chapter_7._Integrating_the_API_layer_and_the_service_layer
Chapter_7._Service_implementation_patterns_for_microservices
Chapter_7._Setting_up_the_environment_and_the_project_structure
Chapter_7._Summary
Chapter_8._Altering_the_state_of_the_server_with_mutations
Chapter_8._Combining_different_types_through_unions_and_interfaces
Chapter_8._Constraining_property_values_with_enumerations
Chapter_8._Defining_queries_to_serve_data_from_the_API
Chapter_8._Designing_GraphQL_APIs
Chapter_8._Introducing_GraphQL_s_type_system
Chapter_8._Introducing_the_products_API
Chapter_8._Representing_collections_of_items_with_lists
Chapter_8._Summary
Chapter_8._Think_graphs_Building_meaningful_connections_between_object_types
Chapter_9._Calling_a_GraphQL_API_with_Python_code
Chapter_9._Consuming_GraphQL_APIs
Chapter_9._Demystifying_GraphQL_queries
Chapter_9._Introducing_GraphQL_queries
Chapter_9._Navigating_the_API_graph
Chapter_9._Running_GraphQL_mutations
Chapter_9._Running_multiple_queries_and_query_aliasing
Chapter_9._Running_parameterized_queries_and_mutations
Chapter_9._Running_queries_with_input_parameters
Chapter_9._Summary
Chapter_9._Using_fragments_in_queries
Chapter_10._Building_GraphQL_APIs_with_Python
Chapter_10._Implementing_the_products_API
Chapter_10._Introducing_Ariadne
Chapter_10._Introducing_the_tech_stack
Chapter_10._Summary
Chapter_11._API_authorization_and_authentication
Chapter_11._Adding_authorization_to_the_API_server
Chapter_11._Authorizing_resource_access
Chapter_11._Summary
Chapter_11._Understanding_authentication_and_authorization_protocols
Chapter_11._Working_with_JSON_Web_Tokens
Chapter_12._Designing_your_API_testing_strategy
Chapter_12._Introduction_to_property-based_testing
Chapter_12._Summary
Chapter_12._Testing_GraphQL_APIs
Chapter_12._Testing_REST_APIs_with_Dredd
Chapter_12._Testing_REST_APIs_with_Schemathesis
Chapter_12._Testing_and_validating_APIs
Chapter_13._Dockerizing_a_microservice
Chapter_13._Dockerizing_microservice_APIs
Chapter_13._Publishing_Docker_builds_to_a_container_registry
Chapter_13._Running_applications_with_Docker_Compose
Chapter_13._Summary
Chapter_14._Creating_a_Kubernetes_cluster_with_EKS
Chapter_14._Deleting_the_Kubernetes_cluster
Chapter_14._Deploying_a_Kubernetes_load_balancer
Chapter_14._Deploying_microservices_to_the_Kubernetes_cluster
Chapter_14._Deploying_microservice_APIs_with_Kubernetes
Chapter_14._How_Kubernetes_works_The__CliffsNotes__version
Chapter_14._Setting_up_a_serverless_database_with_AWS_Aurora
Chapter_14._Summary
Chapter_14._Updating_the_OpenAPI_specification_with_the_ALB_s_hostname
Chapter_14._Using_IAM_roles_for_Kubernetes_service_accounts
Part_1._Introducing_Microservice_APIs
Part_2._Designing_and_building_REST_APIs
Part_3._Designing_and_building_GraphQL_APIs
Part_4._Securing,_testing,_and_deploying_microservice_APIs