我可以将JSON / XML字符串作为POST请求发布到REST ServiceStack吗?

我目前正在开发ServiceStack ,只是很新而已。 (非常有趣;他们说它们比WCF和REST WCF(GET,POST,PUT,DELETE)更好)

我还发现它很有用,代码少,运行速度快。

目前,我想发布数据。 我创建类的对象并发送POST请求。

JsonServiceClient client = new JsonServiceClient(myURL);
MYclass cls= MakeObjectForServiceStackToInsertData();
var res = client.Post<MYClass>("/postrequest", cls); 

通过上面的代码你可以理解,我在做什么。 我想我没有错。 如果您感到困惑,请让我知道。

我可以在我的客户端应用程序(手动)中为我的类(KEY->Value)在JSON中创建一个字符串,并使用服务堆栈将其发布到服务器以发送数据。

string str = myJsonString();
var res = client.Post<.....>

所以,而不是发布整个对象,如果我可以制作JSON字符串并在ServiceStack的POST事件中反序列化它并将数据插入到数据库中会更好吗?

任何想法?


我不确定你的动机是想传递一个原始的JSON字符串,但是如果它确保你只传递一个小的JSON负载,你可以自信地使用Json / Jsv ServiceClients,因为它们不包含null值只会通过你填充的字段。

您可以直接使用Json序列化器验证序列化的内容。

Console.WriteLine(JsonSerializer.SerializeToString(cls));

如果你只想测试/调试你的服务,最好的方法是简单地使用浏览器,或者用查询字符串填充字段,例如:

http://localhost/myservice/postrequest?Field1=value1&Field2=value2

在大多数情况下,如果你想传递一个原始的JSON字符串,你将需要使用另一个HTTP客户端,在这种情况下,最好是调用Web服务POST'ing表单数据,因为它本质上支持所有HTTP客户端,而你不需要JSON序列化器来完成。 例如,下面介绍如何通过带有curl的HTTP POST调用相同的服务:

curl -d "Field1=value1&Field2=value2" http://localhost/myservice/postrequest

您可以调用同一服务的其他方法很多,请参阅服务堆栈的Hello World示例以获取完整列表。 以下是您如何使用HTML调用它的方法:

<form action="http://localhost/myservice/postrequest" method="POST">
    <input type="text" name="Field1" value="value1" />
    <input type="text" name="Field2" value="value2" />
</form>

由于您是通过Web浏览器发布的,Service Stack将返回HTML,但如果您想查看JSON结果,只需将?format = json添加到url即可。

或者,您可以简单地使用JavaScript和jQuery将POST发送到您的Web服务,下面的示例将返回结果作为JSON,该JSON会自动转换为JS对象:

$.ajax({
  type: 'POST',
  url: "http://localhost/myservice/postrequest",
  data: {Field1: "value1", Field2: "value2"},
  success: function(r) { alert(r.Result) },
  dataType: "application/json"
});

使用Web浏览器调试服务的好处在于,您可以使用内置网络检查器(即Chrome中的Web检查器)来查看Web服务的完整请求/响应。

如果您不熟悉它,我也建议您熟悉Fiddler,它可以让您轻松分析HTTP流量。


据我所知,你需要传递对象(DTO请求)。 但是你可以使用json发布请求,如果你想要发布json请求的示例,请查看https://github.com/ServiceStack/ServiceStack.Extras/blob/master/doc/UsageExamples/UsingRestAndJson.cs

链接地址: http://www.djcxy.com/p/68703.html

上一篇: Can I post JSON/XML string as a POST request to REST ServiceStack?

下一篇: why is this llvm IR generated by my compiler is segfaulting