Создание сервисов GET/POST Ocsigen

Я создаю приложение, используя Ocsigenэто приложение не будет подключено к базе данных, и цель состоит в том, чтобы скопировать содержимое с основного веб-сайта сюда. (я использую curl для выполнения запросов Get)

Итак, моя проблема здесь в том, что я пытаюсь сделать "вход в систему" ​​с пользователем, и я хочу создать сервис, который сохраняет в моем коде username и password это вводится пользователем. Тогда я мог бы использовать username и password сделать запрос GET на основной сайт.

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

Я сделал много разных попыток, и в последний раз я сделал что-то вроде следующего:

let save_data =
  Eliom_registration.Action.create
    ~meth:
      (Eliom_service.Post
         (Eliom_parameter.unit,
          Eliom_parameter.string "username"))
    ~path:Eliom_service.No_path
    (fun () username -> username)

На основании примера, который Ocsigen имеет на своем сайте, но я не работаю...

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

Извините, если я плохо объяснил ситуацию... Есть идеи, как решить эту проблему? Я иду не в ту сторону?

Thnx!

PS: Я также попытался отредактировать Os_services.connect_service из папки Ocsigen-Start src, и я думаю, что мне нужно сделать почтовый сервис для этого случая, но снова я не смог сделать то, что я хочу.

1 ответ

Решение

Я думаю, что вы ищете Eliom_reference, то есть если вы хотите сохранить информацию для дальнейшего использования.

https://ocsigen.org/eliom/api/server/Eliom_reference

Я немного заржавел, когда дело доходит до Элиома, но это будет выглядеть так:

let current_username : string option Eliom_reference.eref =
  Eliom_reference.eref ~scope:Eliom_common.default_process_scope None

let save_data = Eliom_registration.Action.create
  ~meth:(Eliom_service.Post
           (Eliom_parameter.unit,
            Eliom_parameter.string "username"))
  ~path:(Eliom_service.No_path)
  (fun () username -> Eliom_reference.set current_username (Some username))
Другие вопросы по тегам