ocaml - 使用 Ocsigen 提供 JSON 的规范方法是什么?

标签 ocaml ocsigen

Ocsigen/Eliom tutorial从一个提供“Hello, world!”的应用程序示例开始。作为 HTML:

open Eliom_content.Html5.D

let main_service =
  Eliom_registration.Html5.register_service
    ~path:["graff"]
    ~get_params:Eliom_parameter.unit
    (fun () () ->
      Lwt.return
         (html
           (head (title (pcdata "Page title")) [])
           (body [h1 [pcdata "Graffiti"]])))

如何将其作为 JSON 来提供呢?具体来说,如何注册 JSON 服务,以及应该使用哪些库/组合器来生成/序列化 JSON(js_of_ocaml?)?

最佳答案

  • 如果您想与客户端 Eliom 程序进行通信,您不需要将自己的数据序列化为 JSON。 Eliom 自动完成任何 OCaml 类型的序列化/反序列化。只需使用 OCaml 服务(或者,更简单:服务器函数并从您的 OCaml 客户端程序调用该函数)。
  • 如果你想使用自己的 JSON 格式,你需要有自己的 JSON 序列化函数(或者例如使用一些像 json-wheel 这样的 ocaml 库来生成 JSON)。在这种情况下,您可以使用 Eliom_registration.String 而不是 Eliom_registration.Html5 注册您的服务。处理函数必须将 JSON 值作为字符串和内容类型返回。
  • 甚至可以定义自己的注册模块,用来代替 Eliom_registration.String。因此,您可以使用 JSON 值的 OCaml 表示形式(并且您不需要自己调用序列化程序)。看看 Eliom_registration.String 之类的模块是如何实现的,以了解如何做到这一点。
  • 关于ocaml - 使用 Ocsigen 提供 JSON 的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17076575/

    相关文章:

    ocaml - ocsigenserver : You are not allowed to use port 80

    ocaml - ocsigenserver.opt 在启动时失败并出现 Unix.ECONNREFUSED

    types - 使用带有可选参数的打印机输入格式

    ocaml - OCaml 的意外结果!=

    ocaml - OCaml 4.01.0 中缺少 Option.default

    ocaml - 为什么Oxygen 不能运行我的python 文件?

    functional-programming - 为什么在 OCaml 中使用模式匹配

    ocaml 中的哈希表

    ocaml - 有氧气书吗?