Program.cs
using System.Text.Json.Serialization;
var app = WebApplication.CreateBuilder(args).Build();
app.MapGet("/hi", () => "hi");
app.MapPost("send-money", (SendMoneyRequest request) =>
{
var receipt = new Receipt($"{request.From.FirstName} {request.From.LastName}",
$"{request.To.FirstName} {request.To.LastName}",
request.Amount,
DateTime.Now,
$"{request.To.Address.Street}, {request.To.Address.City}, {request.To.Address.State}, {request.To.Address.Zip}");
return receipt;
});
app.Run();
record AccountHolder(Guid Id, string FirstName, string LastName, Address Address, string Email);
record Address(string Street, string City, [property: JsonConverter(typeof(JsonStringEnumConverter))] State State, string Zip);
record SendMoneyRequest(AccountHolder From, AccountHolder To, decimal Amount, DateTime SendOn);
record Receipt(string FromAccount, string ToAccount, decimal Amount, DateTime CreatedOn, string ToAddress);
enum State { CA, NY, WA, TX, FL, IL, PA, OH, GA, MI, NC, NJ, VA }
myapp.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
Benchmark via hey
hey -n 200000 -c 100 -m POST -H 'Content-Type: application/json' -d '{
"from": {
"id": "b1b9b3b1-3b1b-3b1b-3b1b-3b1b3b1b3b1b",
"firstName": "John",
"lastName": "Doe",
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
},
"email": "[email protected]"
},
"to": {
"id": "7eb53909-8977-4a7d-8e91-f1bfcfe812e2",
"firstName": "Jane",
"lastName": "Doe",
"address": {
"street": "456 Elm St",
"city": "Anytown",
"state": "FL",
"zip": "12345"
},
"email": "[email protected]"
},
"amount": 30.14,
"sendOn": "2024-06-01T12:00:00"
}' http://localhost:5000/send-money
NodeJS with ExpressJS