【发布时间】:2023-03-11 09:50:02
【问题描述】:
我从 Suave 和 F# 开始。 我正在尝试在我的 webpart 中传递一个 json 序列化对象以在我的响应中获取它。
在php中我有这个
<?php
header('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Headers:Content-Type, Accept');
header('Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Origin:*');
?>
{
"player1Key":"hdegftzj25",
"gameKey":"aegfhzkfszl74852"
}
有了这个我得到了我的 json 对象,然后我尝试对 Suave 和 Newtonsoft.Json 做同样的事情
type gameCreate= {
player1Key : string
gameKey: string
}
let create= { player1Key = "BadBoys2"; gameKey = "zLUGgtrht4456" }
let json = Newtonsoft.Json.JsonConvert.SerializeObject(create)
//OK (acc |> Json.serialize |> Json.format )
let php =
request (fun r ->
match r.queryParam "playerName" with
| Choice1Of2 name -> OK (movies |> Json.serialize(json) |> Json.format(json))
//|> Response.response(Json.toJson(info))
//|> OK
| Choice2Of2 msg -> BAD_REQUEST msg)
let webPart =
choose [
path "/" >=> (OK "Home")
path "/elm/api/create.php" >=> php
]
startWebServer defaultConfig webPart
所以我可以创建和序列化一个 json 对象,但我不知道如何在我的 web 部件中将它作为 http 响应传递,并且使用上面的代码,我的 let php 中的表达式类型不断出现错误
【问题讨论】:
-
您遇到什么错误?我不知道
Json.format是什么类型,或者你从哪里得到它,但你需要将一个字符串传递给OK。 -
实际上,对于我能想到的
Json.serialize/format的任何合理实现,您在Choice1Of2案例中的代码看起来非常不妥。 -
movies是什么?这在任何地方都没有定义。 -
抱歉,我忘了用“create”替换电影。我得到错误类型不兼容。预期(字符串 -> WebPart)-> HttpContext -> 'a 但获取字节 [] -> WebPart 类型“字符串 -> WebPart”不对应类型“字节 []”
-
我在 Suave aspnetmonsters.com/2016/12/2016-12-31-suave987654321@上关注了一个教程