如何对REST Web服务执行POST请求?

Pra*_*aji 1 rest post web-services

我有一个RESTful Web服务,我在其中编写了一个接收POST请求的方法.

我试图通过URL访问该方法http://localhost:8091/prjctname/post.

但它抛出以下错误:

HTTP状态405 - 不支持请求方法'GET'
类型:状态报告
消息:不支持请求方法'GET'
描述:请求的资源不允许使用指定的HTTP方法

以下是代码段.

@RequestMapping(value = "/post", method = RequestMethod.POST)
@Produces("application/json")
@ResponseBody 
public String createUser(@RequestBody PCDBean bean, HttpServletRequest request) {

    String username = null;
    String password = null;
    System.out.println("inside post method");

    String result = service.getCustomer(username, password);
    if(result != null) {
        return username + password;
    } else {
        return "failure";
    }
}
Run Code Online (Sandbox Code Playgroud)

cas*_*lin 5

解释405错误

您正在GET向仅支持POST请求的端点执行请求.在这种情况下,预期的结果是405错误:

6.5.5.405方法不允许

405(不允许的方法)状态代码表示在请求线接收的方法是由源服务器已知的,但不是由目标资源支持.[...]

选择合适的工具

我猜您正在尝试使用浏览器地址栏访问端点.但是,在浏览器地址栏中键入资源URL时,您正在执行GET请求.这是浏览器的默认行为.处理它.

因此,一旦您只能从中执行GET请求,浏览器地址栏就不会为您提供测试REST API的灵活性.

要测试REST API,您应该使用正确的工具.它们将使您能够使用所有HTTP方法(包括POST),设置请求标头和浏览器地址栏中不可用的其他功能来执行请求.

只列出几个: