2016-05-28 45 views
0

Hier ist meine Route:WebAPI Weg funktioniert nicht

config.Routes.MapHttpRoute(
    name: "CreateUser", 
    routeTemplate: "api/User/CreateUser", 
    defaults: new { controller = "User", action = "CreateUser" } 
); 

Hier ist der Endpunkt ist:

[HttpPost] 
public async Task<User> CreateUser([FromBody] User user) 
{ 
    db.DirectUsers.Add(user); 
    await db.SaveChangesAsync(); 
    return user; 
} 

Ich sende diesen Beitrag Daten:

{ 
    "UserId" : 1 
    "Name" : "Nick" 
    "TwitterHandel" : "x" 
} 

An: http://localhost:56792/api/User/CreateUser

Aber ich bekomme eine 404

Antwort

-1

versuchen Sie dies:

config.Routes.MapHttpRoute(
    name: "CreateUser", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { controller = "User", action = "CreateUser", id = RouteParameter.Optional } 
); 
+0

Das wird nicht funktionieren, wenn ich mehr als einen Endpunkt wollen. –

+0

Ich habe meine Antwort bearbeitet. Können Sie das bitte noch einmal bestätigen? – VRPF

+0

Funktioniert für die erste Route und fügt Routen nach 404 hinzu. –

1

Idealerweise verfügen Sie nicht brauchen, um Routen für jede Aktion Methode hinzufügen. Für die normale API genügt eine einzige Routenkonfiguration.

Wenn Sie erweitertes Routing benötigen, können Sie sich das Attribut-Routing von Web API 2 ansehen.

public static void Register(HttpConfiguration config) 
{ 
    config.MapHttpAttributeRoutes(); 

    // This alone is enough. 
    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new {id = RouteParameter.Optional}); 

    ... 
} 

Neben, sollten Sie nicht über http://.../api/User/CreateUser zugreifen. Es schlägt wirklich den Zweck der Verwendung der Web-API, in der Aktionsmethoden HTTP-Verben zugeordnet sind.

Also alles, was Sie brauchen, ist nur HTTPOST zu dieser URL zum Erstellen eines neuen Benutzers.

http://localhost:56792/api/User/

Verwandte Themen