Categorygithub.com/MarySmirnova/api_gateway
modulepackage
0.0.0-20220704163758-cda330ed66d4
Repository: https://github.com/marysmirnova/api_gateway.git
Documentation: pkg.go.dev

# README

API GATEWAY

  • GET /news - возвращает страницу со списком новостей. Поддерживает фильтрацию по названию новости (параметр filter) и запрашивемый номер страницы (параметр page).
  • GET /news/{id} - возвращает объект полной новости по ее id и комментарии к ней.
  • POST /news/{id}/comment - добавляет комментарий к новости по ее id.

Микросервис является единой точкой входа для:

.env example:

GATEWAY_LISTEN=:8080
GATEWAY_READ_TIMEOUT=30s
GATEWAY_WRITE_TIMEOUT=30s

NEWS_ADDRESS=localhost:8081
COMMENTS_ADDRESS=localhost:8082
MODERATE_ADDRESS=localhost:8083

Структуры:

//ответ на GET /news/{id}
type NewsFullDetailed struct {
	ID       int       // номер записи
	Title    string    // заголовок публикации
	PubTime  int64     // время публикации
	Link     string    // ссылка на источник
	Content  string    // содержание публикации
	Comments []Comment // комментарии к публикации
}

//ответ на GET /news
type NewsList struct {
	Posts []NewsShortDetailed // список новостей в сокращенном формате
	Page  Page                // объект пагинации для новостей
}

type NewsShortDetailed struct {
	ID      int    // номер записи
	Title   string // заголовок публикации
	PubTime int64  // время публикации
	Link    string // ссылка на источник
}

type Comment struct {
	ID       int    // id комментария
	ParentID int    // id родительского комментария
	NewsID   int    // id новости
	Text     string // тело комментария
	PubTime  int64  // время публикации
}

type Page struct {
	TotalPages   int // общее количество страниц по запросу
	NumberOfPage int // номер страницы
	ItemsPerPage int // количество элементов на одной странице
}