【问题标题】:How to get "POST" method to show with Rest Web Services如何获取“POST”方法以使用 Rest Web 服务显示
【发布时间】:2021-08-07 20:02:14
【问题描述】:

我是 Rest Web 服务的新手,我正试图找出我做错了什么。当我使用地址在服务器上运行时:

localhost:8080/rest/webresources/error

然后我想要的输出信息(错误信息)就出现了。

但是当我在服务器上运行以显示输入值时:

localhost:8080/rest/webresources/inputvalues

它没有。我究竟做错了什么?我觉得我的路径是错误的,我尝试了它的不同组合,但它仍然给我一个 404 not found 错误。

@Path("error")
public class RestWeb {
@GET    
@Produces(MediaType.TEXT_HTML)
public String getText() {
    return "<body> Error. Invalid data. </body>";
}

@POST
@Produces(MediaType.TEXT_HTML)
@Path("/inputvalues")
public String getParamText(@FormParam("travel") String travel,
        @FormParam("start") String start,
        @FormParam("duration") String end, 
        @FormParam("party") String people) {
    String returnString = processInput(travel, start, end, people);
    return "<body> " + returnString + " </body>";
}

【问题讨论】:

  • 当您说run on server 时,您的意思是指您在浏览器上键入 URL 吗?还是使用一段代码来调用 POST REST 服务?或者你有没有使用任何工具来调用 REST 服务?
  • 我使用 Tomcat 运行它
  • 你在哪里输入地址localhost:8080/rest/webresources/inputvalues
  • 在 Eclipse 上运行时的 URL 浏览器中

标签: java rest web-services server


【解决方案1】:

假设 REST 服务已正确编写和部署,这里的问题是缺乏对 POST Rest 服务预期行为方式的理解。

从上面的评论部分可以清楚地看出,您正在尝试直接从浏览器调用 POST API。 这对于 GET 类型的服务可以很好地完成,但不适用于 POST 类型的服务。


原因
REST API 使用多种 HTTP 方法对 REST 资源执行各种操作。任何使用 GET 调用的 REST API 都可以使用 Web 浏览器调用。

但是,邮政服务需要一组特定的输入参数(在您的情况下,表单参数"travel""start""duration""party" 是必需的) 您不能通过在浏览器中简单地输入服务 URL 的路径来直接调用 POST API。

您可以使用 POSTMAN、RESTer 等工具以及网络上提供的许多此类软件,并提供有关如何将这些工具用于 POST 类型 REST API 调用的大量教程。

【讨论】:

  • 有道理,谢谢你的澄清
  • 我想通了,非常感谢您的帮助:)
  • 很高兴能帮上忙!如果您认为这是正确的,请不要忘记通过单击答案左侧的勾号将其标记为已接受的答案。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多