Tutorials Microservices with .NET

Product Microservice — Complete Guide

Product Microservice — 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 17 of 120

API Contracts

BeginnerIntermediateAdvancedProfessional

Beginner · 1 — Foundations · ~6 min · Module 2: Building Microservices

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 number in the example and run again — predict the output first.
  5. Break the code on purpose (remove a semicolon), read the compiler error, 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.

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