java - 在 Postman 中将类对象作为参数传递
问题描述
我正在开发一个 API 应用程序,但是我在使用特定方法时遇到了困难。
该getCertificationPOJO
方法负责将 Store 作为参数并搜索该存储是否存在于数据库中。
现在这里的问题是如何在 Postman 中将 Store 对象作为参数传递。我尝试将它作为 JSON 字符串传递,但这不起作用。
为糟糕的编辑道歉
认证控制器
@Controller
public class CertController {
@Autowired
private CertificationRepository certRepo;
@Autowired
private StoreRepository StoreRepository;
@GetMapping(value = "/getCertObject")
public @ResponseBody
Optional<Certification> getCertificationPOJO(@RequestParam Store store)
{return Lists.newArrayList(certRepo.findAll()).stream().filter(e->e.getStore() == store).findFirst();}
}
商店类
@Entity
@Table(name = "store")
public class Store implements com.halal.abstractions.Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@JsonIgnore
@OneToOne(optional = true) // By default this is set to true so technically this is redundant but, yea lets
// just keep it there
private Certification certification;
@NotNull
@Column(nullable = false)
private String name;
private String phoneNumber;
@NotNull
@Column(nullable = false)
private String address;
@NotNull
@Column(nullable = false)
private double latitude;
@NotNull
@Column(nullable = false)
private double longitude;
@NotNull
@Column(nullable = false)
private Date dateAdded;
static final DateFormat DF = new SimpleDateFormat("dd/MM/yyyy");
protected Store() {
}
public Store(String name, String phoneNumber, String address, double latitude, double longitude) {
this.name = name;
this.setPhoneNumber(phoneNumber);
this.setAddress(address);
this.latitude = latitude;
this.longitude = longitude;
this.dateAdded = new Date(System.currentTimeMillis());
}
@Override
public Long getId() {
return this.id;
}
@Override
public void setId(long id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Double getLatitude() {
return this.latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public Double getLongitude() {
return this.longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
@Override
public String getDateAdded() {
return DF.format(dateAdded);
}
@Override
public void setCertification(Certification certification) {
this.certification = certification;
}
@Override
public Certification getCertification() {
return this.certification;
}
@Override
public String toString() {
return "Store{" + "id=" + id + ", certification=" + certification + ", name='" + name + '\'' + ", phoneNumber='"
+ phoneNumber + '\'' + ", address='" + address + '\'' + ", latitude=" + latitude + ", longitude="
+ longitude + ", dateAdded=" + dateAdded + '}';
}
}
认证等级
@Entity
@Table(name = "certification")
public class Certification {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull
@Column(nullable = false)
private boolean isCertified;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "id")
@JsonIgnore
private Store store;
public Certification() {
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public Store getStore() {
return this.store;
}
public void setStore(Store store) {
this.store = store;
}
public boolean isIsCertified() {
return this.isCertified;
}
public void setIsCertified(boolean isCertified) {
this.isCertified = isCertified;
}
@Override
public String toString() {
return "Certification{" + "id=" + id + ", isCertified= " + isCertified + '}';
}
}
解决方案
我建议不要在 GET 请求中发送正文,请在此处查看类似的答案
@Murilo 建议的查询参数路由是一种方式,但如果确定数据库中是否已经存在 getCertificationPOJO 的方式仅取决于 id,那么您可能只需要发送 id 在这种情况下,路径变量最好如下所示其中 {id} 可以替换为实际 ID
GET /getCertObject/{id}
然后在控制器中
@GetMapping("/getCertObject/{id}")
@ResponseBody
Optional<Certification> getCertificationPOJO(@PathVariable String id) {
...
}
推荐阅读
- elasticsearch - 网站遇到意外错误。请稍后再试。德鲁巴 8
- java - Android studio Geocoder 获取位置类别
- reactjs - Ant Design 输入组件不更新值
- c++ - 我误解了吗?关于 DFS 的答案似乎被扭曲了
- wpf - 棱镜:不同用户控件之间的导航
- multithreading - 从其他线程执行 GTK 函数
- prometheus - 如何使用指标中的普罗米修斯查询刮标签值并设置警报
- c++ - boost::string_ref 比 std::string 复制慢
- wordpress - 如何将 TinyMCE 与 WPForms 集成
- javascript - moment.fromNow() 时区问题