首页 > 解决方案 > JSV 表单中的 HttpPost 数据

问题描述

我需要与服务堆栈 Web 服务通信。它似乎接受带有 jsv 值的表单内容。

有没有办法以这种方式自动序列化对象?像“JsvFormContent”之类的东西?

非常感谢!我对服务堆栈完全陌生。

标签: servicestack

解决方案


ServiceStack 接受多种不同格式的内容,JSV 只是其中之一,尽管它是 ServiceStack 用来序列化复杂类型 QueryString 或 FormData 参数的内容,但是如果您只是发送 HTML 表单值,它们不是复杂值,所以您可以使用标准的 HTML 内容类型发送它们,例如(queryString、application/x-www-form-urlencoded 或 multipart/form-data)。如果您需要从任何受支持的流行语言调用 ServiceStack API,您可以只使用它们的通用 JSON 服务客户端和生成的 DTO。

您永远不需要,但如果您想从 C#/.NET 发送 JSV,您可以使用JsvServiceClient

唯一需要发送 JSV 的情况是,如果您需要从浏览器发送复杂的 JS 对象,在这种情况下,您可以使用@servicestack/client中的 JSV impl 将 JS 对象序列化为 JSV,例如:

let jsv = JSV.stringify(obj);

如果您正在使用任何@servicestack/client已导入的 SPA 项目模板。

否则@servicestack/client嵌入在 ServiceStack.dll中,您可以通过以下方式访问:

<script src="/js/servicestack-client.js"></script>

对于较旧的或非 ServiceStack 应用程序,您可以从unpkg CDN解决它:

<script src="https://unpkg.com/@servicestack/client/dist/servicestack-client.min.js"></script>

您可以使用以下命令将其导入全局命名空间

<script>
    var exports = { __esModule:true }, module = { exports:exports }
    function require(name) { return exports[name] || window[name] }
</script>
<script src="/js/servicestack-client.js"></script>
<script>
    Object.assign(window, exports); //import
    let jsv = JSV.stringify(obj);
</script>

推荐阅读