Content-Type必须是'application / json-patch + json'JsonServiceClient ServiceStack

时间:2016-12-01 23:58:55

标签: servicestack

我正在尝试使用JsonServiceClient执行补丁到服务堆栈api,如下所示:

var patchRequest = new JsonPatchRequest
{
    new JsonPatchElement
    {
        op = "replace",
        path = "/firstName",
        value = "Test"
    }
};
_jsonClient.Patch<object>($"/testurl/{id}", patchRequest);

但我收到以下错误:

  

Content-Type必须是'application / json-patch + json'

错误很明显。有没有办法在执行JsonServiceClient的请求之前更改内容类型?

这是ServiceStack api中的请求POCO:

[Api("Partial update .")]
[Route("/testurl/{Id}”, "PATCH")]
public class PartialTest : IReturn<PartialTestRequestResponse>, IJsonPatchDocumentRequest,
    IRequiresRequestStream
{
    [ApiMember(Name = “Id”, ParameterType = "path", DataType = "string", IsRequired = true)]
    public string Id { get; set; }

    public Stream RequestStream { get; set; }
}

public class PartialTestRequestResponse : IHasResponseStatus
{
    public ResponseStatus ResponseStatus { get; set; }
}

服务实施:

public object Patch(PartialTest request)
    {
        var dbTestRecord = Repo.GetDbTestRecord(request.Id);

        if (dbTestRecord == null) throw HttpError.NotFound("Record not found.");

        var patch =
          (JsonPatchDocument<TestRecordPoco>)
              JsonConvert.DeserializeObject(Request.GetRawBody(), typeof(JsonPatchDocument<TestRecordPoco>));

        if (patch == null)
            throw new HttpError(HttpStatusCode.BadRequest, "Body is not a valid JSON Patch Document.");

        patch.ApplyTo(dbTestRecord);
        Repo.UpdateDbTestRecord(dbTestRecord);
        return new PartialTestResponse();
    }

我正在使用Marvin.JsonPatch V 1.0.0库。

0 个答案:

没有答案