Optionaler query-string-Parameter in ASP.NET Web-API

Muss ich die Umsetzung der folgenden WebAPI Methode:

/api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX

Alle query-string-Parameter kann auf null gesetzt werden. Das heißt, die Anrufer geben an, von 0 zu allen 5 Parametern.

In MVC4 beta ich verwendet, um Folgendes zu tun:

public class BooksController : ApiController
{
    //GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01
    public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date) 
    {
        //...
    }
}

MVC4-RC benimmt sich nicht mehr so. Wenn ich angeben, weniger als 5 Parameter, es antwortet darauf mit einem 404 sagen:

Keine Aktion fand auf dem controller 'Bücher', die der Anfrage entspricht.

Was ist die richtige Methode, die Signatur zu machen, Verhalten sich wie früher, ohne Angabe der optionalen parameter in der URL-routing?

  • setzen Sie [httpget] auf Aktion.
  • Wenn ich legen Sie alle Parameter, die die Methode aufgerufen wird; ferner beginnt mit Get so ist es automatisch mit der HTTP GET Methode...
  • Dies ist, wie web-api-routing funktioniert, asp.net/web-api/overview/web-api-routing-and-actions/...
  • Ja. Ich weiß, wie es funktioniert. Ich kann einfach nicht damit es funktioniert unter DIESEM besonderen Umstand.
  • Wie hat sich diese selbst kompilieren? string? ist kein Gültiger Typ. Sie können nicht erklären string als eine null geben, da es ein Referenz-Typ.
  • Sie haben Recht, es war wohl eine schnelle Kern der code, den ich schrieb, nur für die Zwecke zu verstehen, warum ich war nicht in der Lage, um die Standardeinstellung zu null. Soweit ich mich erinnere, das eigentliche Problem war mit DateTime die nicht vorgegeben werden, bis die beta-Version. Auch diese Frage ist von 1 Jahr und einen halben Tag.

InformationsquelleAutor frapontillo | 2012-08-08
Schreibe einen Kommentar