我可以创建一个接受参数AND JSON的C#Web.Api方法吗?

时间:2016-08-23 17:31:40

标签: c# json asp.net-web-api

我想将一些JSON数据传递给我的控制器,但也是一个用于识别类型的字符串。我想知道我是否可以创造这样的东西:

[HttpPost]
public void Write(string documentType, string jsonData)
{
    ...

我有一个这样的方法,但当我尝试从另一个应用程序执行此操作时:

// packageObject is an instance of my object I want JSON serialized
response = await client.PostAsJsonAsync("EdiDocument/Write?documentType=211", packageObject);

我明白了:

  

StatusCode:404,ReasonPhrase:'Not Found'

这是我能做的吗?

1 个答案:

答案 0 :(得分:1)

可以这样想,你有一个端点地址(例如Mongodb C# driver doc)和一个有效载荷(在你的情况下,有效载荷是json)。如果你想传递信息,它必须适合其中一个......你可以通过(1)使用端点地址中的附加参数来完成你想要的任务,或者只是(2)将新值添加为属性你的json有效载荷。

对于选项1,您可以使用以下内容:

[HttpPost]
[Route("{docType}"]
public void Write(string docType, string jsonData) {....}

这意味着你的终点会改变为:

http://yourserver/yourapp/yourcontroller/docTypeGoesHere

选项2只是展开你的json对象以包含另一部分信息。换句话说,添加一个' documentType' jsonData对象的属性。

我猜你是不是试图不修改json对象的结构,这会留给你选项1.