Ошибка при возвращении списка объектов для приложения весенней загрузки при разработке микросервисов - PullRequest
0 голосов
/ 04 июля 2019
  • Я следовал учебному пособию по микросервисам от youtube, чтобы создать независимые сервисы (приложение для весенней загрузки)
  • Я создал java-файл реализации сервиса, предоставляющий определения методов для URL-адреса отображения запроса (/ catalog / userId) для операции чтения
  • На указанный выше URL-адрес, возвращающий список объектов в качестве тела ответа (HTTP-ответа) для HTTP-запроса на чтение
  • В Java произошла ошибка определения функции отправки списка объектов
  • Ошибка возникает в строке 17 файла MovieCatalogResource.java с указанием недопустимого начала выражения, неожиданный токен
  • Я искал ошибку, но все же поражен выполнением
  • Ребята, не могли бы вы помочь вам решить проблему с вашими предложениями
  • Предоставление кода ниже

CatalogItem.java

package com.example.moviecatalogservice;

public class CatalogItem {
    private String name;
    private String desc;
    private int rating;
    public CatalogItem(String name, String desc, int rating){
        this.name = name;
        this.desc = desc;
        this.rating = rating;
    }
    public int getRating(){
        return rating;
    }
    public void setRating(){
        this.rating = rating;
    }
    public String getName(){
        return name;
    }
    public void setName(){
        this.name = name;
    }
    public String getDesc(){
        return desc;
    }
    public void setDesc(){
        this.desc = desc;
    }
}

MovieCatalogService.java

package com.example.moviecatalogservice;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.an notation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collections;
import java.util.List;

@RestController
@RequestMapping("/catalog")
public class MovieCatalogResource {
    @RequestMapping("/{userId}")
    //public List<CatalogItem> getCatalog(@PathVariable("userId") String userId){
    public List<CatalogItem> getCatalog(@PathVariable("userId") String userId){
        return Collections.singletonList(
                new CatalogItem(name: "transformers", desc:"Test", rating:4)
        );
    }

}

Ответы [ 3 ]

1 голос
/ 04 июля 2019

Почему вы делаете это:

new CatalogItem(name: "transformers", desc:"Test", rating:4)

вместо этого:

new CatalogItem("transformers", "Test", 4)

в строке № 17 MovieCatalogResource.java?

1 голос
/ 04 июля 2019

Замените приведенный ниже оператор с нового CatalogItem (имя: «трансформаторы», desc: «Тест», рейтинг: 4) на новый CatalogItem («трансформаторы», «Тест», 4)

1 голос
/ 04 июля 2019

изменить

new CatalogItem(name: "transformers", desc:"Test", rating:4)

На

new CatalogItem("transformers", "Test", 4)

У вас должен быть соответствующий конструктор CatalogItem () в объекте или модели CatalogItem

Послеchange at line no 17 из MovieCatalogResource.java будет выглядеть, как показано ниже

@RestController
@RequestMapping("/catalog")
public class MovieCatalogResource {
    @RequestMapping("/{userId}")
    //public List<CatalogItem> getCatalog(@PathVariable("userId") String userId){
    public List<CatalogItem> getCatalog(@PathVariable("userId") String userId){
        return Collections.singletonList(
                new CatalogItem("transformers", "Test", 4)
        );
    }

}

Рабочий пример

Controller.java

@GetMapping("/{id}")
    public List<User> getUser(@PathVariable(name="id") int id)
    {
        return Collections.singletonList(
                new User(1,"username")
        );
    }

User.java

public class User {

    private int id;
    private String name;
    public User(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + "]";
    }


}

Протестировано с почтальоном enter image description here

...