Ответ
В основном REST API (HTTP/JSON) — стандартный выбор для большинства проектов. Используем net/http или фреймворки типа Gin, Echo.
Пример простого эндпоинта:
func main() {
r := gin.Default()
r.GET("/api/data", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello, frontend!"})
})
r.Run()
}
Для real-time приложений — WebSocket (gorilla/websocket).
Если нужна эффективность — gRPC (бинарный протокол на HTTP/2). Подходит для внутреннего взаимодействия, но требует генерацию кода через protobuf.
GraphQL (например, с graphql-go) — если фронту нужна гибкость в запросах.
Выбор зависит от требований: простота (REST), скорость (gRPC), гибкость (GraphQL) или real-time (WebSocket).