【发布时间】:2015-11-03 10:40:29
【问题描述】:
对 REST 相当陌生。这是我的两个课程:
values.java
@Path("/values")
public class values {
int value = 0;
List<Integer> list = new ArrayList<Integer>();
@GET
@Produces(MediaType.TEXT_PLAIN)
public int getSum() {
return sum.sum(list);
}
@POST
public String addValue() {
list.add(value);
return "ok";
}
@DELETE
@Produces(MediaType.TEXT_PLAIN)
public String deleteList() {
list.clear();
return "ok";
}
}
sum.java
@Path("/values/sum")
public class sum {
public static int sum(List<Integer> numbers) {
int sum = 0;
numbers.add(10);
for(int i : numbers) {
sum += i;
}
return sum;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>PACKAGENAME</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>PACKAGENAME</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
当我访问我的 Tomcat 服务器时,它只会向我发送 10 作为响应(如果 POST 不起作用,这是正确的)。对新手有什么建议吗?我尝试通过http://localhost:8080/PACKAGENAME/api/values?value=15,它每次只会将我送回 10 个。我认为它只使用 GET 方法。如何让它 POST?
谢谢!
更新 1:
@POST
public String addValue(Integer value) {
list.add(value);
return "ok";
}
更新 2:如何将值 (?value=15) 从 POST 传递到我的列表?
【问题讨论】:
-
你是如何传递网址的?使用 REST 客户端?
-
好的,您需要使用@wawek 提到的 REST 客户端,或者创建一个表单并将操作设置为 post ... post 请求将不包含任何数据。您使用的网址完全是一个获取请求。
-
是的,我明白了。我现在收到了我的请求。出于某种原因,我的 get 方法只给了我 10 的总和...
-
您只是将
value添加到列表中,并且它是用int value = 0;初始化的,这就是为什么您的总和会随着时间的推移而保持不变 -
它不是只用那个值初始化的吗?这是接近它的好方法吗?请参阅 OP 中的更新 1。
标签: java rest tomcat jersey tomcat7