Size: a a a

Генератор непрочитанных сообщений

2020 October 28

DD

Dmitriy Danilov in Генератор непрочитанных сообщений
с частными банками
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
ну в целом да
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
согласен
источник

С

Санжар in Генератор непрочитанных сообщений
доброе утро
источник

DD

Dmitriy Danilov in Генератор непрочитанных сообщений
Доброе)
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
Санжар
доброе утро
источник

С

Санжар in Генератор непрочитанных сообщений
Я написал базовый сервис для получения температуры в Москвабаде через ЯндексПогоду.

Там имеется апи, которое в таком формате примерно:

GET https://api.weather.yandex.ru/v2/informers?
lat=<широта>
& lon=<долгота>
& [lang=<язык ответа>]

X-Yandex-API-Key: <значение ключа>


Я написал сервис:
https://github.com/forszaken/delivery/blob/master/app/Services/WeatherService.php

Где делается запрос на это апи. Параметры к запросу в отдельном методе подготавливаются, сами параметры редактируются в config/weather.php
Как можно сделать лучше, в чем минусы подхода?
источник

С

Санжар in Генератор непрочитанных сообщений
Санжар
Я написал базовый сервис для получения температуры в Москвабаде через ЯндексПогоду.

Там имеется апи, которое в таком формате примерно:

GET https://api.weather.yandex.ru/v2/informers?
lat=<широта>
& lon=<долгота>
& [lang=<язык ответа>]

X-Yandex-API-Key: <значение ключа>


Я написал сервис:
https://github.com/forszaken/delivery/blob/master/app/Services/WeatherService.php

Где делается запрос на это апи. Параметры к запросу в отдельном методе подготавливаются, сами параметры редактируются в config/weather.php
Как можно сделать лучше, в чем минусы подхода?
Пока единственное что меня отталкивает, это $headers для запроса к Апи в конструкторе, чисто интуитивно. Но я хз как лучше иначе.
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
источник

С

Санжар in Генератор непрочитанных сообщений
ты предлагаешь газзл выбросить или чо?
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
https://github.com/forszaken/delivery/blob/1ea7cd0d488c1aa316d67d55089f9fcafa981d68/app/Services/WeatherService.php#L46

апи урл я бы лучше получал в конструкторе или вообще принимал бы уже погодный клиент с настроенным базовым урлом
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
Санжар
ты предлагаешь газзл выбросить или чо?
просто использовать интерфейс поверх
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
в целом оч не гибкая штука у тебя получается что у тебя один раз хардкодятся широта и долгота в конфиге. почему просто в методе получения погоды не принимать их как параметры, а вызывающая сторона уже пусть хранит это как хочет?
источник

С

Санжар in Генератор непрочитанных сообщений
Alexander Kladov
https://github.com/forszaken/delivery/blob/1ea7cd0d488c1aa316d67d55089f9fcafa981d68/app/Services/WeatherService.php#L46

апи урл я бы лучше получал в конструкторе или вообще принимал бы уже погодный клиент с настроенным базовым урлом
тут апи урл + параметры к урлу ес чо
Но как я понял ты предлагаешь сделать $this->url = config('weather.api_url'), чтобы это было по умолчанию в самом классе базово и потом в getUrl дальше дополнялось через buildParams()?
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
и ответ от погодного сервиса я бы обернул в какой нибудь объект, в котором уже будут явные поля
а то у тебя типа миксед идет и хер знает че оттуда вернется пока не попробуешь запустить https://github.com/forszaken/delivery/blob/1ea7cd0d488c1aa316d67d55089f9fcafa981d68/app/Services/WeatherService.php#L25
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
Санжар
тут апи урл + параметры к урлу ес чо
Но как я понял ты предлагаешь сделать $this->url = config('weather.api_url'), чтобы это было по умолчанию в самом классе базово и потом в getUrl дальше дополнялось через buildParams()?
нет я предлагаю сделать:

public function __construct(string $apiUrl) { $this->apiUrl = $apiUrl; }
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
или даже
public function __construct(WeatherClient $client) { $this->client = $client; }
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
где в клиенте уже будет настроен урл до апи
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
в общем главный поинт, не нужно обращаться к глобальному стейту в твоем сервисе
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
(под глобальным стейтом я имею ввиду вызов функции config())
источник