REST API未返回预期结果

时间:2017-01-05 23:27:13

标签: c# asp.net asp.net-mvc rest asp.net-web-api

我尝试按照文章Build RESTful API's with ASP.NET Web API学习如何创建RESTful API。

我创建了第一个项目和控制器Contact

public class ContactController : Controller
{
    // GET: Contact
    public string[] Index()
    {
        return new string[]
        {
            "Hello",
            "World"
        };
    }
}

但是当我在浏览器中加载URL时,而不是获得文章(["Hello","World"])中描述的响应。我收到的回复是System.String[]

我不明白我错过了什么。

顺便说一句,这篇文章是从2013年开始的。有没有人知道一篇好文章可能有点新鲜?

2 个答案:

答案 0 :(得分:1)

您现在拥有的是简单的ASP.NET MVC控制器。对于Web API控制器,您应该从ApiController而不是Controller继承您的控制器:

public class ContactController : ApiController

动作名称也应以HTTP动词开头。如果您要向/api/contact端点发送GET请求,则会收到错误

  

请求的资源不支持http方法' GET'。

默认情况下,Web API控制器的路由中不使用操作名称。如果您要检查默认路由配置,它将是api/{controller}/id。通过HTTP请求方法选择正确的操作。在您的情况下,它应该是GetXXX或只是Get

答案 1 :(得分:0)

您无法从Web Apis返回常规基元。如果你使用的是.net的常规MVC Web API,至少如果没有。所以,如果是这种情况,你可以做类似

的事情
public class ContactController : Controller
{
    // GET: Contact
    public JsonResult Index()
    {   
        return Json(new { value1: "Hello", value2: "world" }, JsonRequestBehavior.AllowGet);

    }
}

希望这有帮助