我正在尝试创建一个Web应用程序,它将接收包含json的HTTP帖子。我现在要做的就是表明我可以收到请求。我首先创建了一个带有Web API模板的ASP .NET Web应用程序。我添加了一个控制器来接收帖子:
public class PostmanController : Controller
{
[System.Web.Mvc.HttpPost]
public void Index([FromBody] string request)
{
// Create handler class object
PostmanHandler test = new PostmanHandler();
// Pass request to the convertjsontoobject method
test.ConvertJsonToObject(request);
}
}
正如您在此处所见,我还在Models文件夹中创建了一个处理程序:
public class PostmanHandler
{
public void ConvertJsonToObject(string s)
{
// Deserialize JSON
var newData = JsonConvert.DeserializeObject<testobject>(s);
}
}
将JSON转换为我制作的类:
public class testobject
{
public int id { get; set; }
public string name { get; set; }
}
我正在尝试测试它以查看它是否有效但我在发送POST请求时得到了Postman的404响应。我将它发送到http://localhost:xxxx/api/Postman我认为遵循WebApiConfig文件中的路由说明:routeTemplate:&#34; api / {controller} / {id}&#34;
我是否遗漏了某种路由?
答案 0 :(得分:0)
如果你真的使用Web API(而不是MVC),你的控制器应该是ApiController的子类(而不是Controller)。
更新:所以,你真的不需要自己处理JSON的反序列化。 Web API将为您做到这一点。您的请求&#34;参数不应该是&#34;字符串&#34;,它实际上应该是您尝试反序列化的类型
[HttpPost]
public void PostObject([FromBody]testobject request)
{
// Your request object should be deserialized already.
}
答案 1 :(得分:0)
在您的网址中取出API并尝试http://localhost:xxxx/Postman。您的控制器PostmanController不是Web API(派生自Controller而非ApiController类),因此在这种情况下,/ api / {controller} / {id}的路由模板不正确。