Benchmarks icon indicating copy to clipboard operation
Benchmarks copied to clipboard

Add a Go implementation of the TodosApi "stage 2" app

Open DamianEdwards opened this issue 2 years ago • 5 comments

It should be a Go port of https://github.com/aspnet/Benchmarks/tree/main/src/BenchmarksApps/TodosApi and thus include:

  • HTTP API for reading/adding/updating/deleting Todos from a database, including validation
  • Health checks for the database and JWT configuration
  • JWT authentication for the delete API
  • Error response formatting as JSON Problem Details

Which framework should it use? Gin? https://dev.to/xngwng/top-5-go-rest-api-frameworks-k0e https://nordicapis.com/7-frameworks-to-build-a-rest-api-in-go/ https://www.slant.co/topics/1412/~best-web-frameworks-for-go

DamianEdwards avatar Jun 15 '23 23:06 DamianEdwards

Gin (most popular), Echo, Fiber (most performant) image

kokizzu avatar Jun 16 '23 11:06 kokizzu

I work with Go and Gin (also a former .NET dev), and I can recommend Gin as an easy and performant way to build an API in Go. Look into the following:

For error responses there are a few different options - you can probably use Gin's AbortWithStatusJSON() to return a JSON object along with a 500 or similar status code.

Not sure what you need with DB health checks exactly. Tell me more and I can advise.

dandago avatar Jun 17 '23 07:06 dandago

may i know where to send PR?

WIP https://github.com/tg123/TodosApi

tg123 avatar Jun 19 '23 09:06 tg123

may i know where to send PR?

WIP https://github.com/tg123/TodosApi

you need to add the benchmark test, I guess. and if you wanna contribute to this project. you need Fork this repo, write your code there, and do PR

WahidinAji avatar Jun 19 '23 11:06 WahidinAji

We can do the benchmarkification! Thank you for the starting point @tg123 !

davidfowl avatar Jun 22 '23 22:06 davidfowl