===== C#, no framework (HttpListener), port 4010
    0 Error(s)
200  /                              Profitina Laundry: See our services and prices
200  /services/S0004                S0004: Dry cleaning - shirt/blouse (per item):
404  /services/S0099                Not found: No service S0099.
404  /services/%3Cb%3EHi%3C%2Fb%3E  Not found: No service &lt;b&gt;Hi&lt;/b&gt;.
411  POST /services
===== PHP, no framework (built-in server), port 4011
200  /                              Profitina Laundry: See our services and prices
200  /services/S0004                S0004: Dry cleaning - shirt/blouse (per item):
404  /services/S0099                Not found: No service S0099.
404  /services/%3Cb%3EHi%3C%2Fb%3E  Not found: No service &lt;b&gt;Hi&lt;/b&gt;.
405  POST /services
===== Java, no framework (com.sun.net.httpserver), port 4012
200  /                              Profitina Laundry: See our services and prices
200  /services/S0004                S0004: Dry cleaning - shirt/blouse (per item):
404  /services/S0099                Not found: No service S0099.
404  /services/%3Cb%3EHi%3C%2Fb%3E  Not found: Nothing at /services/&lt;b&gt;Hi&lt
405  POST /services
===== C# with ASP.NET Core (minimal APIs), port 4013
    0 Error(s)
200  /                              Profitina Laundry. Prices at /services
200  /services/S0004                {"id":"S0004","description":"Dry cleaning - sh
404  /services/S0099                {"error":"No service S0099"}
404  /services/%3Cb%3EHi%3C%2Fb%3E  {"error":"No service <b>Hi<%2Fb>"}
405  POST /services
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Kestrel
Transfer-Encoding: chunked

{"id":"S0004","description":"Dry cleaning - shirt/blouse (per item)","price":20000.00}

===== logs
-- raw-csharp
Listening on http://127.0.0.1:4010/ (Ctrl+C stops)
GET / -> 200
GET / -> 200
GET /services/S0004 -> 200
GET /services/S0099 -> 404
GET /services/%3Cb%3EHi%3C%2Fb%3E -> 404
-- raw-java
Listening on http://127.0.0.1:4012/ (Ctrl+C stops)
GET / -> 200
GET / -> 200
GET /services/S0004 -> 200
GET /services/S0099 -> 404
GET /services/<b>Hi</b> -> 404
POST /services -> 405
-- aspnet
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://127.0.0.1:4013
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /home/claude/kit/FBP/Code_new/Chapter01/aspnet
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...
