在springboot中制作Restapi时,在swagger上获得不同字段的名称



我正在尝试为课程实现AddtoCart功能。但当我试着检查我的招摇时,并没有显示出我想要的预期领域。谁能查一下我的密码吗。

Swagger显示这些字段:

{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}

CartController

@RestController
public class AddToCartController {
@Autowired
CartService cartService;
@PostMapping("/addToCart")
public Cart addCartwithCourse(@RequestBody HashMap<String,String> addCartRequest)
{
try {
// String keys[] = {"courseId","userId","qty","price"};
long courseId = Long.parseLong(addCartRequest.get("courseId"));
long userId =  Long.parseLong(addCartRequest.get("userId"));
int qty =  Integer.parseInt(addCartRequest.get("qty"));
double price = Double.parseDouble(addCartRequest.get("price"));
Cart obj = cartService.addCartbyUserIdAndCourseId(courseId,userId,qty,price);
return obj;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

推车型号:

package com.hashedin.hu22.entities;
import org.springframework.data.annotation.CreatedDate;
import javax.persistence.*;
import java.time.Instant;
@Entity
public class Cart {
@Id
long id;
int qty;
double price;
Long user_id;
@CreatedDate
private Instant createdDate;
String CourseName;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="cr_fid", referencedColumnName = "id")
Course course;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Long getUser_id() {
return user_id;
}
public void setUser_id(Long user_id) {
this.user_id = user_id;
}
public Instant getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Instant createdDate) {
this.createdDate = createdDate;
}
public String getCourseName() {
return CourseName;
}
public void setCourseName(String courseName) {
CourseName = courseName;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
}

添加到CartRepo

public interface AddToCartRepo extends JpaRepository<Cart, Long> {
@Query("Select addCart  FROM Cart addCart WHERE addCart.course.id= :course_id and addCart.user_id=:user_id")
Optional<Cart> getCartByProductIdAnduserId(@Param("user_id")Long user_id, @Param("course_id")Long course_id);
@Query("Select addCart  FROM Cart addCart WHERE addCart.user_id=:user_id")
List<Cart> getCartByuserId(@Param("user_id")Long user_id);
}

CartService

@Service
public class CartServiceImpl implements CartService {
@Autowired
AddToCartRepo addToCartRepo;
@Autowired
CourseSerivce courseSerivce;
@Override
public Cart addCartbyUserIdAndCourseId(long courseId, long userId, int qty, double price) throws Exception
{
try {

if (addToCartRepo.getCartByProductIdAnduserId(userId, courseId).isPresent()) {
throw new Exception("Product is Already Exist");
}
Cart obj = new Cart();
obj.setQty(qty);
obj.setUser_id(userId);
Course course = courseSerivce.getCourseById(courseId);
obj.setCourse(course);
obj.setPrice(price);
return addToCartRepo.save(obj);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}

@Override
public List<Cart> getCartByUserId(long userId){
return addToCartRepo.getCartByuserId(userId);
}
}

我试图复制您正在尝试做的事情,我找到了许多方法来避免出现这个问题!我将发布其中一种方式,希望它能有所帮助!在CartController中,不使用哈希映射,而是使用DTO(数据传输对象(,而使用所有必需的字段,如下所示!

CartController

@RestController
public class CartController {
@Autowired
CartService cartService;
@PostMapping("/addToCart")
public Cart addCartwithCourse(@RequestBody CartDto addCartRequest)
{
try {
// String keys[] = {"courseId","userId","qty","price"};
long courseId = addCartRequest.getCourseId();
long userId =  addCartRequest.getUserId();
int qty =  addCartRequest.getQty();
double price = addCartRequest.getPrice();
Cart obj = cartService.addCartbyUserIdAndCourseId(courseId,userId,qty,price);
return obj;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

并按照以下编写DTO

CartD到

package com.SOF.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CartDto {
private long courseId;
private long userId;
private int qty;
private double price;
}

我们将在招摇过市的中得到如下结果

必需的正文{"courseId":0,"userId":0,"数量":0,"价格":0}

最新更新