2016-10-24 3 views
0

Ich baue meine erste API. Die GET-Anfrage funktioniert, aber ich bleibe bei einer POST-Anfrage mit Fehler 415 Nicht unterstützter Medientyp. Nach einigem Suchen und Neuschreiben von Code schlägt es immer noch fehl. Sieht jemand warum? Die Parameterwerte sind:Java MongoDB POST: 415 nicht unterstützter Medientyp

-String userName 
-String password 
-String phone 
-String email 
-List roles 

CODE: UserResource:

@RolesAllowed("OWNER") 
@POST 
@Consumes(MediaType.APPLICATION_JSON) 
public void create(@PathParam("userName") String userName,@PathParam("password") String password,@PathParam("phone") String phone,@PathParam("email") String email,@PathParam("roles") List<String> roles) 
{ 
User user = new User(); 
user.setName(userName); 
user.setPassword(password); 
user.setPhone(phone); 
user.setEmail(email); 
user.setRoles(roles); 
userService.createUser(user); 
} 

Userservice:

public void createUser(User user){ 
userDAO.create(user); 
} 

UserDAO:

public void create(User user) 
{ 
    save(user); 
} 

die POST-Anforderung:

localhost:8080/User/?userName=Daniel&password=test&phone=0634554567&[email protected]&roles=["OWNER"] 

Antwort

2

Sie haben zwei Probleme:

  1. auslassen @Consumes(MediaType.APPLICATION_JSON). Deine Anfrage hat überhaupt nichts mit json zu tun.
  2. @PathParam s sollte ersetzt werden mit @RequestParam s. Die Werte werden als Anforderungsparameter (Abfragezeichenfolge) und nicht als Pfadteile gelesen.

    localhost:8080/User?userName=Daniel&...

    Pfadparameter

    Um zu verwenden, sollten Sie einen Pfad Anmerkung zu der Ressource Methode Konfiguration hinzufügen:

Auch im Anforderungs Beispiel sollten Sie von den zusätzlichen / nach User loszuwerden , etwas wie:

@RequestMapping("/{userName}/{password}/{phone}/{email}/{roles}

und die Anforderung sollte l so schnell und so etwas wie:

localhost:8080/User/Daniel/test/0634554567/daniel/OWNER

, die an allen

Und eine letzte Sache nicht intuitiv ist: List<String> roles ist falsch. Spring wird nicht in eine Liste von Zeichenfolgen konvertiert, unabhängig davon, ob Sie Pfad- oder Abfrageparameter verwenden. Sie müssen die Rollen selbst in ein Array aufteilen (wahrscheinlich mit , als Trennzeichen) oder ein Converter liefern.

Verwandte Themen