Servlet REST-Full Object per QueryParam

Hallo,
ich möchte ein Objekt per URL auslesen. Es handelt sich um folgendes Szenario. Ich lege Produkte an. Und ein Produkt hat Zutaten und diese Zutaten würde ich gerne als Objekt übergeben. So hat jede Zutat auch Eigenschaften, wie ob es vegan oder vegetarisch ist. Und natürlich haben verschiedene Produkte, eine verschiedene Anzahl an Zutaten. Im Augenblick lese ich einen String aus und füge den Titel hinzu. Aber dabei bleibt es schon. Es fehlen noch Eigenschaften (VEGAN, BIO usw.). Hat jemand einen Ansatz für eine Lösung? Online finde ich recht wenig, was mich in die richtige Richtung bringt.

Java:
@Path("/produkt/{produktName}/{barcode}")
public class ProductRestService {
    private static Datastore ds;

    public ProductRestService() {
        ds = dataBaseConnection();
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response writeProductWithProperties(@PathParam("produktName") String produktName,
            @PathParam("barcode") String barcode, @QueryParam("ingredient") List<String> ingredients,
            @QueryParam("production") List<String> production) {
        if (produktName == null) {
            return Response.status(Status.BAD_REQUEST).entity("ProduktName wurde nicht übergeben").build();
        }
        if (barcode == null) {
            return Response.status(Status.BAD_REQUEST).entity("Barcode wurde nicht übergeben").build();
        }
        if (barcode.length() != 13) {
            return Response.status(Status.BAD_REQUEST).entity("Es wurde kein Valider Barcode übergeben").build();
        }
        if (ingredients.isEmpty() || ingredients == null) {
            return Response.status(Status.BAD_REQUEST).entity("Es wurde kein Inhaltsstoff übergeben").build();
        } else {
        }

        List<Ingredient> productIngredients = new ArrayList<>();
        for (int i = 0; i < ingredients.size(); i++) {
            Ingredient ingredient = new Ingredient();
            ingredient.setName(ingredients.get(i));
            switch (production.get(i)) {
            case "VEGAN":
                ingredient.setProductionEnum(ProductionEnum.VEGAN);
                break;
            case "VEGETARIEN":
                ingredient.setProductionEnum(ProductionEnum.VEGETARIAN);
                break;
            default:
                break;
            }
            if (ingredient != null) {
                productIngredients.add(ingredient);
            }
        }
        // List<Ingredient>productIngredients = ingredients;

        Product product = new Product();
        product.setName(produktName);
        product.setBarcode(barcode);
        product.setIngredient(productIngredients);

        ObjectMapper MAPPER = new ObjectMapper();
        try {
            ds.save(product);
            return Response.status(Status.ACCEPTED).entity(MAPPER.writeValueAsString(product)).build();
        } catch (IOException e) {
            return Response.status(Status.BAD_REQUEST).entity("{" + e + "}").build();
        }
    }

    public Datastore dataBaseConnection() {
        Morphia morphia = new Morphia();
        MongoDBCon mdb = new MongoDBCon();        morphia.map(Product.class).map(Ingredient.class).map(Intolerances.class).map(Profil.class);
        return morphia.createDatastore(mdb.getMongoClient(), "helge");
    }
}

Vielen Dank.

Viele Grüße,

Helge
 
Zuletzt bearbeitet von einem Moderator:

stg

Top Contributor
@Joose Du kannst natürlich ein JSON im request body mitsenden, aber bei einem HTTP-GET ist das dann doch recht sinnfrei.

Zu Frage selbst: Was genau klappt denn nicht? Du solltest schon ein wenig konkreter werden was du als Ergebnis erwartetst und was du stattdessen bekommst. Wie sehen deine Aufrufe aus? Bekommst du Fehlermeldungen? Wenn ja, welche? Usw..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Fehler wegen Rest-Schnittstelle Allgemeines EE 4
J rest-schnittstelle Allgemeines EE 3
LimDul Rest-Client/DTOs aus JSON Ergebnis generieren Allgemeines EE 3
M einfacher REST Webservice Allgemeines EE 4
M Rest mit Java 11 Allgemeines EE 6
OnDemand REST Json Response Mapping ist null Allgemeines EE 2
L Tcp-IP Server an Rest Schnittstelle Allgemeines EE 20
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
L Spring REST Application (Data Retrive) API und Architectur hilfe Allgemeines EE 11
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
N Authentication/UserPrincipal mit Rest Webservice? Allgemeines EE 6
P ArrayIndexOutOfBoundsException: 48188 bei REST-WebServices Allgemeines EE 1
S Jersey, REST: Vererbung Allgemeines EE 0
G RMI vs REST Allgemeines EE 12
F REST-Service: GET erkennt Veränderungen an der DB nicht. Allgemeines EE 2
G REST Webservice Allgemeines EE 11
A NamingException: Could not dereference object Allgemeines EE 4
S kann eigenes object nicht von applet zu servlet senden Allgemeines EE 3
G Ein JavaBean-Object nur einmal instanzieren. Allgemeines EE 3
flashfactor EJB: Wie kann ich ein nicht Serializiertes Object übergeben Allgemeines EE 5
J xdoclet session facade + value object Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben