Sobes.tech
Назад к вопросам
Senior
4

Как мы будем возвращать весь заказ и его частично (API дизайн)?

Компании, где спрашивали
Магнит Тех

Ответ от нейросети

sobes.tech AI

Для возврата полного заказа и его частичных данных через API можно использовать REST-подход с разными эндпоинтами или параметрами запроса.

Например:

  • GET /orders/{id} — возвращает полный заказ с деталями.
  • GET /orders/{id}?fields=items,total — возвращает только указанные поля (частично).

Или использовать GraphQL, где клиент сам указывает, какие поля ему нужны.

В Go это можно реализовать так:

func GetOrder(w http.ResponseWriter, r *http.Request) {
    id := mux.Vars(r)["id"]
    fields := r.URL.Query().Get("fields")

    order := fetchOrderFromDB(id)

    if fields != "" {
        // Парсим fields и формируем ответ с нужными полями
        partialResponse := filterOrderFields(order, fields)
        json.NewEncoder(w).Encode(partialResponse)
        return
    }

    json.NewEncoder(w).Encode(order)
}

Такой подход позволяет гибко отдавать данные по запросу клиента.