Tutorials Microservices with .NET

API Contracts — Complete Guide

API Contracts — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Microservices with .NET on Toolliyo Academy.

On this page

Microservices with .NET · Lesson 22 of 131

API Contracts

Beginner ✓IntermediateAdvancedProfessional

Intermediate · 2 — Building services · ~6 min · Module 3: ShopNest Services and Integration

What is this?

API contracts are the agreed request/response shapes between services — JSON fields, URLs, status codes. Order.Api promises POST /orders returns { id, status }.

Why should you care?

Without contracts, Payment breaks when Order renames a field silently. Contracts let teams develop in parallel.

See it live — copy this example

Create a Web API project (dotnet new webapi), paste the code, then run dotnet run.

// ShopNest.Contracts/Orders/CreateOrderRequest.cs
public record CreateOrderRequest(
    Guid CustomerId,
    IReadOnlyList<OrderLineRequest> Lines);

public record OrderCreatedResponse(Guid Id, string Status, decimal Total);

// Order.Api implements exactly this shape

Run Example »

This lesson uses terminal or setup steps. Run commands on your computer — the live editor appears on coding lessons.

What happened?

  • Shared contract project holds DTOs only — no database, no business logic.
  • Version contracts when you must break clients.

Try it yourself

  1. Create ShopNest.Contracts class library.
  2. Add CreateOrderRequest and OrderCreatedResponse records.
  3. Reference Contracts from Order.Api and from a future Gateway.
  4. Change a string or route in the example and save — watch Swagger or the RabbitMQ Management UI update.
  5. Break the code on purpose (remove a semicolon), read the error message, then fix it.

Remember

Contracts = public DTOs between services. Keep contracts thin — no EF, no HTTP clients. Version when breaking; prefer additive changes.

Real-world: Mobile app + BFF

Android app depends on stable OrderCreatedResponse. Backend team adds field — old apps ignore it; never rename id to orderId without version.

Outcome: Contract tests in CI catch breaking JSON before production.

Interview prep for this lesson

Practice these questions aloud after reading—each links to a full structured answer.

Senior PDF Detailed
Distributed Transactions: Using Two-Phase Commit (2PC) or Sagas to ensure?
Short answer: that a transaction either commits or rolls back across multiple services. Real-world example (ShopNest) After payment succeeds, ShopNest publishes OrderPaid . Inventory and Notification services react indep…
Mid PDF Detailed
Data Consistency: Since all services share the same database, it's easier to ensure?
Short answer: data consistency and avoid issues like eventual consistency. Real-world example (ShopNest) ShopNest splits Catalog, Cart, Order, and Payment into services so teams can deploy catalog changes without redeplo…
Mid PDF Detailed
Liveness Probe:?
Short answer: Used to determine if a service is alive and functioning. If the liveness probe fails, Kubernetes will restart the container. Example: A database connection check can be implemented as a liveness probe. Real…
Senior PDF Detailed
Eventual Consistency: Most microservices architectures lean toward eventual?
Short answer: consistency where services are allowed to be temporarily inconsistent, but will eventually converge to a consistent state through events. Event-driven architectures with tools like Kafka or RabbitMQ are com…
Mid PDF Detailed
External Configuration Management: Use tools like Consul, Spring Cloud?
Short answer: Config, or HashiCorp Vault to manage configuration in a central, environment-specific location. Real-world example (ShopNest) ShopNest splits Catalog, Cart, Order, and Payment into services so teams can dep…
Questions on this lesson 0

Sign in to ask a question or upvote helpful answers.

No questions yet — be the first to ask!

Microservices with .NET
Course syllabus

Microservices with .NET Tutorial

Module 1: Foundations and Fundamentals
Module 2: Building User Microservice
Module 3: ShopNest Services and Integration
Module 4: RabbitMQ and Messaging
Module 5: Saga and Distributed Transactions
Module 6: API Gateway
Module 7: gRPC, CQRS, and GraphQL
Module 8: Resiliency and Fault Tolerance
Module 9: DevOps and Cloud-Native
Module 10: Git and GitHub
Module 11: CI/CD Pipelines
Module 12: Observability and Testing
Module 13: Advanced Topics
Module 14: Real-World Enterprise Projects
Toolliyo Assistant
Ask about tutorials, ebooks, training, pricing, mentor services, and support. I use public site content only—not admin or internal tools.

care@toolliyo.com

Need callback? Share your details