2017-01-05 5 views
1

Ich versuche dem Artikel Build RESTful API's with ASP.NET Web API zu folgen, um zu erfahren, wie man eine RESTful API erstellt.REST API gibt keine erwarteten Ergebnisse zurück

Ich erstellte das erste Projekt und Controller, Contact.

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

Aber wenn ich die URL in einem Browser zu laden, anstatt die Reaktion des Erhaltens in dem Artikel (["Hello","World"]). Die Antwort, die ich bekomme, ist System.String[].

Ich verstehe nicht, was ich vermisse.

BTW, der Artikel ist von 2013. Weiß jemand einen guten Artikel, der vielleicht ein wenig neuer ist?

Antwort

1

Was Sie jetzt haben, ist ein einfacher ASP.NET MVC Controller. Für Web-API-Controller sollten Sie Ihren Controller aus ApiController statt Controller erben:

public class ContactController : ApiController 

Auch Aktionsnamen sollten mit HTTP-Verb beginnen. Wenn Sie die GET-Anforderung an den Endpunkt /api/contact senden, erhalten Sie den Fehler

Die angeforderte Ressource unterstützt die HTTP-Methode 'GET' nicht.

Standardmäßig wird der Aktionsname in der Route für Web-API-Controller nicht verwendet. Wenn Sie die Standardroutenkonfiguration überprüfen, lautet sie api/{controller}/id. Die korrekte Aktion wird über die HTTP-Methode der Anfrage ausgewählt. In Ihrem Fall sollte es GetXXX oder einfach Get sein

+0

Nun tun könnten, ja, das scheint die Situation zu sein. Ich frage mich, warum so ein POS-Artikel. Es wird nicht "ApiController" oder "Get" erwähnt, bis zu einem der späteren Beispiele! –

+0

@ JonathanWood yep, ich frage mich, warum Autor nicht auf richtige Klasse zeigen. Es gibt nur Erwähnung auf dem Screenshot - Gerüst-Vorlage zum Hinzufügen neuer Controller ist * Empty API-Controller * –

+0

Kann ich eine andere Frage stellen? Sieht so aus, als würde JSON zurückgegeben. Kann das konfiguriert werden? –

0

Sie können keine regulären Primitiven aus der Web API zurückgeben. Zumindest wenn nicht, wenn Sie eine reguläre MVC Web API von .net verwenden. Also, wenn dies der Fall ist, dass Sie so etwas wie

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

    } 
} 

hoffte, das hilft

+0

Danke, aber dies ist nicht die Technik, die in der verwendet wird Artikel. –

Verwandte Themen