gpt4 book ai didi

java - 支持 JAX-RS 中的查询参数

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:29 24 4
gpt4 key购买 nike

我做了以下教程来使用我的 mysql 数据库创建一个安静的 Web 服务 http://netbeans.org/kb/docs/websvc/rest.html

基本功能运行良好,但现在我想扩展服务功能。如何向 GET 服务添加其他参数?我试过这个 http://img15.hostingpics.net/pics/708229Capturedcran20111205205553.png但结果我拥有了所有城市。当我添加参数countryCode链接时,服务变为 localhost:8080/Data/resources/converter.city/?countryCode=TUR×tamp=1323114935089 这是我的代码

CityFacadeRest.java

@Stateless
@Path("converter.city")
public class CityFacadeREST extends AbstractFacade<City> {
@PersistenceContext(unitName = "DataPU")
private EntityManager em;

public CityFacadeREST() {
super(City.class);
}

@POST
@Override
@Consumes({"application/xml", "application/json"})
public void create(City entity) {
super.create(entity);
}

@PUT
@Override
@Consumes({"application/xml", "application/json"})
public void edit(City entity) {
super.edit(entity);
}

@DELETE
@Path("{id}")
public void remove(@PathParam("id") Integer id) {
super.remove(super.find(id));
}

@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public City find(@PathParam("id") Integer id) {
return super.find(id);
}

@GET
@Override
@Produces({"application/xml", "application/json"})
public List<City> findAll() {
return super.findAll();
}

@GET
@Path("{from}/{to}")
@Produces({"application/xml", "application/json"})
public List<City> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
return super.findRange(new int[]{from, to});
}

@GET
@Path("count")
@Produces("text/plain")
public String countREST() {
return String.valueOf(super.count());
}

@java.lang.Override
protected EntityManager getEntityManager() {
return em;
}

}

城市.java

@Entity
@Table(name = "City")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "City.findAll", query = "SELECT c FROM City c"),
@NamedQuery(name = "City.findById", query = "SELECT c FROM City c WHERE c.id = :id"),
@NamedQuery(name = "City.findByName", query = "SELECT c FROM City c WHERE c.name = :name"),
@NamedQuery(name = "City.findByCountryCode", query = "SELECT c FROM City c WHERE c.countryCode = :countryCode"),
@NamedQuery(name = "City.findByDistrict", query = "SELECT c FROM City c WHERE c.district = :district"),
@NamedQuery(name = "City.findByPopulation", query = "SELECT c FROM City c WHERE c.population = :population")})
public class City implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "ID")
private Integer id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 35)
@Column(name = "Name")
private String name;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 3)
@Column(name = "CountryCode")
private String countryCode;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "District")
private String district;
@Basic(optional = false)
@NotNull
@Column(name = "Population")
private int population;

public City() {
}

public City(Integer id) {
this.id = id;
}

public City(Integer id, String name, String countryCode, String district, int population) {
this.id = id;
this.name = name;
this.countryCode = countryCode;
this.district = district;
this.population = population;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCountryCode() {
return countryCode;
}

public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}

public String getDistrict() {
return district;
}

public void setDistrict(String district) {
this.district = district;
}

public int getPopulation() {
return population;
}

public void setPopulation(int population) {
this.population = population;
}

@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}

@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof City)) {
return false;
}
City other = (City) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}

@Override
public String toString() {
return "converter.City[ id=" + id + " ]";
}

}

最佳答案

您需要添加另一个方法

    @GET
@Produces({"application/xml", "application/json"})
public City find(@DefaultValue("") @QueryParam("countryCode") String country,
<any other parameters you want to allow>
{
//code to search by the different parameters
}

关于java - 支持 JAX-RS 中的查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com