Как создать маршрут, который будет запускаться на любом пути в Servant?

Игнорировать последний элемент в каждой строке:

with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row[:-1]

или преобразовать каждую строку в dict:

columns = ['value']
with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        rec = dict(zip(columns, row))
        print rec

печатает

{'value': '-1'}
{'value': '-1'}
{'value': '1'}
{'value': '1'}
2
задан radrow 15 March 2019 в 05:51
поделиться

1 ответ

Вы можете использовать Capture для захвата любого пути. Однако ему должно предшествовать : симв. Так, например,

type AppRoute = Capture "routePath" String :> Get '[HTML] RawHtml

type ServerAPI =
    Get '[HTML] RawHtml
    :<|> UserAPI
    :<|> AdminAPI
    :<|> AppRoute

Теперь AppRoute сработает на yourserver.com/:thisIsMyPath/ и передаст "thisIsMyPath" в качестве аргумента для конечной точки. В настоящее время я не знаю, как это обойти :. Предполагая, что html является конечной точкой, которая в данный момент не зависит от заданного пути, вы можете определить весь свой сервер как

server :: Server ServerAPI
server = html
  :<|> userServer
  :<|> adminServer
  :<|> const html

. Вы можете прочитать об этом здесь . 1114]


Кстати, почему бы не использовать псевдоним type вместо того, чтобы брать семейства типа tanky? В моих приложениях Servant я обычно делаю

type AppRoute (x :: Symbol) = x :> Get '[HTML] RawHtml

, что прекрасно работает.

0
ответ дан radrow 15 March 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: