Отсутствует обязательный строковый параметр foodId

Я пытаюсь получить объект food по его foodId, но получаю код ошибки 400, в котором говорится, что обязательный строковый параметр foodId отсутствует.

Вот мой класс контроллера:

    package com.quickmeal.controller;
    import java.util.List;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;


    @RestController
    @RequestMapping("/api/foods")
    public class FoodController {

    @Autowired
    private FoodService foodService;


    @RequestMapping(method = RequestMethod.POST)
    public Food createFood(@RequestBody Food food) {
        return foodService.createFood(food);
    }


    @RequestMapping(method = RequestMethod.GET)
    public List<Food> listFood() {
        return foodService.listFood();
    }

    @RequestMapping(value = "/{foodId}",method = RequestMethod.GET)
    public Object getFoodById(@RequestParam String foodId) {
        System.out.println("Testing..."+foodId);
        return foodService.getFoodById(foodId);

    }


    }

Мой класс обслуживания:

package com.quickmeal.service.impl;

import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.quickmeal.model.Food;
import com.quickmeal.repository.FoodRepository;
import com.quickmeal.service.FoodService;

@Service
public class FoodServiceImpl implements FoodService{

    @Autowired
    private FoodRepository foodRepository;

    @Override
    public Food createFood(Food food) {

        return foodRepository.save(food);

    }


    @Override
    public List<Food> listFood() {

        return foodRepository.findAll();

    }


    @Override
    public Object getFoodById(String foodId) {

        return foodRepository.findById(foodId);
    }



}

Моя модель:

package com.quickmeal.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Food {
    @Id
    private String foodId;

    private String foodName;
    private double foodPrice;
    public String getFoodId() {
        return foodId;
    }
    public void setFoodId(String foodId) {
        this.foodId = foodId;
    }
    public String getFoodName() {
        return foodName;
    }
    public void setFoodName(String foodName) {
        this.foodName = foodName;
    }
    public double getFoodPrice() {
        return foodPrice;
    }
    public void setFoodPrice(double foodPrice) {
        this.foodPrice = foodPrice;
    }


}

Это мой URL

локальный: 8080 / api / foods / 5b08f8cee731e32c60e95aa8

5b08f8cee731e32c60e95aa8 - это идентификатор, предоставленный mongoDB

Пожалуйста помоги. Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
255
1

Ответы 1

foodId в этом пути "/{foodId}" - это @PathVariable, а не @RequestParam

Правильный метод ручки должен быть:

@RequestMapping(value = "/{foodId}",method = RequestMethod.GET)
public Object getFoodById(@PathVariable String foodId) {

Другие вопросы по теме