【问题标题】:ServiceStack - REST service does not deserialize json to request objectServiceStack - REST 服务不反序列化 json 以请求对象
【发布时间】:2013-09-29 02:33:19
【问题描述】:

我在 ServiceStack 中创建了一个 REST 服务,但是当我使用 REST URL 调用它时,它不会反序列化我将服务发布到我的请求对象中的 JSON。如果我使用默认 URL 或在查询字符串中提供参数,它可以正常工作。

我的请求对象:

[Route("/myservice", "POST")]
public class MyRequestObject
{
    public string MyString { get; set; }
    public int MyInt { get; set; }
}

我的服务:

public class MyService : Service
{
    public object Post(MyRequestObject request)
    {
        return new
            {
                MyString = request.MyString,
                MyInt = request.MyInt
            };
    }
}

以及我发布到服务的 json:

{"myString": "abc", "myint": 42}

我的 REST URL 是 /api/myservice,默认 URL 是 /api/json/asynconeway/MyRequestObject。我已验证服务 get 是使用 REST 和默认 URL 调用的。

非常感谢您的意见。

成功标头

请求

POST /api/json/asynconeway/MyRequestObject HTTP/1.1
Host: bd.local
Connection: keep-alive
Content-Length: 32
Origin: chrome-extension://aejoelaoggembcahagimdiliamlcdmfm
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Accept: application/json
Accept-Encoding: gzip,deflate,sdch
Accept-Language: da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

响应

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
COMMERCE-SERVER-SOFTWARE: Microsoft Commerce Server, Enterprise Edition
X-Powered-By: ServiceStack/3,914 Win32NT/.NET
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 01 Oct 2012 10:32:37 GMT
Content-Length: 29

错误标头

请求

POST /api/myservice HTTP/1.1
Host: bd.local
Connection: keep-alive
Content-Length: 32
Origin: chrome-extension://aejoelaoggembcahagimdiliamlcdmfm
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Accept: application/json
Accept-Encoding: gzip,deflate,sdch
Accept-Language: da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

响应

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
COMMERCE-SERVER-SOFTWARE: Microsoft Commerce Server, Enterprise Edition
X-Powered-By: ServiceStack/3,914 Win32NT/.NET
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 01 Oct 2012 10:30:38 GMT
Content-Length: 11

【问题讨论】:

  • 您不会尝试发出 GET 请求吧?你是如何发布到它的?当您删除“POST”动词时它会起作用吗?
  • 不,我正在发帖。我已经通过 jQuery 和 Dev HTTP Client for Chrome 进行了尝试 - 两者都适用于默认 URL。没有 POST 动词也不起作用。
  • 它应该可以工作,但没有足够的信息来确定根本原因。理想情况下,我们希望在 github.com/ServiceStack/ServiceStack/issues 上进行独立的失败测试 - 但如果您提供可能显示问题的请求/响应 HTTP 标头(成功 + 失败)
  • 这个问题有答案吗?
  • No 还没发现(除了使用默认的url)。

标签: rest servicestack


【解决方案1】:

问题可能出在进行 POST 的代码中。数据json是否字符串化,例如:

JSON.stringify({"myString": "abc", "myint": 42})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多