GOLANG_INTERVIEW Telegram 183
📌 Тестовое Задание (Golang + PostgreSQL)

Написать сервис, который будет слушать входящие запросы по HTTP, преобразовывать их в запрос к соответствующей функции Postgres, выполнять запрос и возвращать ответ клиенту.

Скиллы: Golang, Postgres, regexp, строки, работа с json в Golang и Postgres.

Web-сервис
Написать сервис, который будет слушать входящие запросы по HTTP, преобразовывать их в запрос к соответствующей функции Postgres (по схеме трансляции, приведённой ниже), выполнять запрос и возвращать ответ клиенту.

Как плюс: ограничить максимальное количество одновременных коннектов к БД.
Как два плюса: добавить prometheus метрики на вызовы (количество вызовов, длительность выполнения).

Настройки соединения с сервером Postgres читать из config файла:
port - (int) порт, на котором слушать запросы
endpoint - (string) название API
host - (string) hostname, где установлен Postgres
user - (string) имя пользователя Postgres
password - (string) пароль пользователя Postgres
schema - (string) схема в Postgres
Трансляция запроса в вызов Postgres функции
Формат запроса к сервису:

HTTP_METHOD server:port/endpoint/vversion[/object/id ...]]/destination/[id] , где

HTTP_METHOD - одно из: GET, POST, PUT, DELETE
server - сервер, где запущен веб-сервис
port - порт
endpoint - значение из config-файла
version - номер версии API, число
/object/id - необязательный повторяющийся параметр, определяющий путь в иерархии объектов
/destination/ - конечный объект
id - id конечного объекта. Обязателен для методов PUT, DELETE, не указывается для POST. Для GET -- если указан, то возвращает элемент с данным id, если не указан, возвращает полный список элементов.
Правила трансляции
запрос в Postgres = select * from схема.[object1[_object2]...]_destination_method( [id1[, id2]... ,] id[, params])

В зависимости от HTTP метода к имени функции добавляется cуффикс method:

для GET - get
для POST - ins
для PUT - upd
для DELETE - del
В случае, если идентификатор объекта не указан, соответствующий элемент id в запросе должен быть равен нулю, на примерах:

для запроса GET http://localhost:80/api/v1/user/12/comment/34
запрос в Postgres должен выглядеть так: select * from test.user_comment_get(12, 34) (комментарий c id=32 пользователя c id=12)
для запроса GET http://localhost:80/api/v1/user/12/comment/
запрос в Postgres должен выглядеть так: select * from test.user_comment_get(12, 0) (все комментарии пользователя 12)
для запроса GET http://localhost:80/api/v1/user/comment/
запрос в Postgres должен выглядеть так: select * from test.user_comment_get(0, 0) (все комментарии всех пользователей)
Для POST и PUT методов в теле запроса принимается JSON, который передаётся в Postgres в качестве параметра params.

Все методы должны возвращать результат работы соответствующей Postgres функции с ContentType = 'application/json'

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133🔥3🤔1



tgoop.com/golang_interview/183
Create:
Last Update:

📌 Тестовое Задание (Golang + PostgreSQL)

Написать сервис, который будет слушать входящие запросы по HTTP, преобразовывать их в запрос к соответствующей функции Postgres, выполнять запрос и возвращать ответ клиенту.

Скиллы: Golang, Postgres, regexp, строки, работа с json в Golang и Postgres.

Web-сервис
Написать сервис, который будет слушать входящие запросы по HTTP, преобразовывать их в запрос к соответствующей функции Postgres (по схеме трансляции, приведённой ниже), выполнять запрос и возвращать ответ клиенту.

Как плюс: ограничить максимальное количество одновременных коннектов к БД.
Как два плюса: добавить prometheus метрики на вызовы (количество вызовов, длительность выполнения).

Настройки соединения с сервером Postgres читать из config файла:
port - (int) порт, на котором слушать запросы
endpoint - (string) название API
host - (string) hostname, где установлен Postgres
user - (string) имя пользователя Postgres
password - (string) пароль пользователя Postgres
schema - (string) схема в Postgres
Трансляция запроса в вызов Postgres функции
Формат запроса к сервису:

HTTP_METHOD server:port/endpoint/vversion[/object/id ...]]/destination/[id] , где

HTTP_METHOD - одно из: GET, POST, PUT, DELETE
server - сервер, где запущен веб-сервис
port - порт
endpoint - значение из config-файла
version - номер версии API, число
/object/id - необязательный повторяющийся параметр, определяющий путь в иерархии объектов
/destination/ - конечный объект
id - id конечного объекта. Обязателен для методов PUT, DELETE, не указывается для POST. Для GET -- если указан, то возвращает элемент с данным id, если не указан, возвращает полный список элементов.
Правила трансляции
запрос в Postgres = select * from схема.[object1[_object2]...]_destination_method( [id1[, id2]... ,] id[, params])

В зависимости от HTTP метода к имени функции добавляется cуффикс method:

для GET - get
для POST - ins
для PUT - upd
для DELETE - del
В случае, если идентификатор объекта не указан, соответствующий элемент id в запросе должен быть равен нулю, на примерах:

для запроса GET http://localhost:80/api/v1/user/12/comment/34
запрос в Postgres должен выглядеть так: select * from test.user_comment_get(12, 34) (комментарий c id=32 пользователя c id=12)
для запроса GET http://localhost:80/api/v1/user/12/comment/
запрос в Postgres должен выглядеть так: select * from test.user_comment_get(12, 0) (все комментарии пользователя 12)
для запроса GET http://localhost:80/api/v1/user/comment/
запрос в Postgres должен выглядеть так: select * from test.user_comment_get(0, 0) (все комментарии всех пользователей)
Для POST и PUT методов в теле запроса принимается JSON, который передаётся в Postgres в качестве параметра params.

Все методы должны возвращать результат работы соответствующей Postgres функции с ContentType = 'application/json'

🖥 Github

@golang_interview

BY Golang вопросы собеседований


Share with your friend now:
tgoop.com/golang_interview/183

View MORE
Open in Telegram


Telegram News

Date: |

Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation. Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: “#marketing, #news, #usa. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. The visual aspect of channels is very critical. In fact, design is the first thing that a potential subscriber pays attention to, even though unconsciously.
from us


Telegram Golang вопросы собеседований
FROM American