尝试执行 POST 时不允许使用 REST Java 方法
Method Not Allowed REST Java when trying to do POST
我只想创建一个简单的 REST 服务,它使用 @GET
和 @POST
。
对于 @GET
函数,一切正常,但对于 @POST
,当我想在我的服务器上创建一个新用户时,浏览器一直处于饱和状态(METHOD NOT ALLOWED)。
我阅读了很多关于如何修复此错误的文章,但我还没有得到任何东西。
我的 @POST
代码:
@Path("/hello")
public class HelloResource(){
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/post")
public Response createUser(@PathParam("name") String name,@PathParam("address") String address,@PathParam("birthYear") String birth,@PathParam("ps") String password) throws NotAllowedException,MethodNotFoundException,Exception {
DataStore.getInstance().putPerson(new Person(name, address, Integer.parseInt(birth), password));
String json = "{\n";
json += "\"status\": " + '"'+"CREATED" +'"'+ ",\n";
json+="}";
return Response.status(200).entity(json).build();
}}
我也尝试添加 @Consumes
函数与 (MediaType.APPLICATION.JSON) 和 (MediaType.TEXT_PLAIN) 但没有任何改变。
另外,我输入的URL是:
http://localhost:8080/HelloREST/rest/hello/post?name=PouYad&address=mustbejsonlater&birthYear=2005&ps=12345
如您所见,我也尝试了很多异常处理程序。
有人可以帮忙吗?
直接通过浏览器访问URL只能创建Get Request,不能创建POST Request
你应该
- 创建 HTML 表单,使用 POST 方法将操作设置为您的服务 url,然后提交。
- 像邮递员一样使用 Rest Client 通过 POST 方法访问您的服务。
- 使用 java.net.http api 编写您自己的 Http 客户端,或者只是简单地使用
方便的 libraries/frameworks 之一(就像 Spring 有 RestTemplate)。
如果您在浏览器 URL 地址字段中输入 URL,它将不起作用,因为浏览器将发送 "GET" 请求。因此,您必须使用允许您像 PostMan 一样发送 "POST" 的客户端。或者编写您自己的小型 httpConnection 函数来发送 "POST"
你还必须将@PathParam 更改为@FormParam 才能起作用(@QueryParam 也会起作用,但因为它是POST,所以最好使用@FormParm) .
我只想创建一个简单的 REST 服务,它使用 @GET
和 @POST
。
对于 @GET
函数,一切正常,但对于 @POST
,当我想在我的服务器上创建一个新用户时,浏览器一直处于饱和状态(METHOD NOT ALLOWED)。
我阅读了很多关于如何修复此错误的文章,但我还没有得到任何东西。
我的 @POST
代码:
@Path("/hello")
public class HelloResource(){
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/post")
public Response createUser(@PathParam("name") String name,@PathParam("address") String address,@PathParam("birthYear") String birth,@PathParam("ps") String password) throws NotAllowedException,MethodNotFoundException,Exception {
DataStore.getInstance().putPerson(new Person(name, address, Integer.parseInt(birth), password));
String json = "{\n";
json += "\"status\": " + '"'+"CREATED" +'"'+ ",\n";
json+="}";
return Response.status(200).entity(json).build();
}}
我也尝试添加 @Consumes
函数与 (MediaType.APPLICATION.JSON) 和 (MediaType.TEXT_PLAIN) 但没有任何改变。
另外,我输入的URL是:
http://localhost:8080/HelloREST/rest/hello/post?name=PouYad&address=mustbejsonlater&birthYear=2005&ps=12345
如您所见,我也尝试了很多异常处理程序。
有人可以帮忙吗?
直接通过浏览器访问URL只能创建Get Request,不能创建POST Request
你应该
- 创建 HTML 表单,使用 POST 方法将操作设置为您的服务 url,然后提交。
- 像邮递员一样使用 Rest Client 通过 POST 方法访问您的服务。
- 使用 java.net.http api 编写您自己的 Http 客户端,或者只是简单地使用 方便的 libraries/frameworks 之一(就像 Spring 有 RestTemplate)。
如果您在浏览器 URL 地址字段中输入 URL,它将不起作用,因为浏览器将发送 "GET" 请求。因此,您必须使用允许您像 PostMan 一样发送 "POST" 的客户端。或者编写您自己的小型 httpConnection 函数来发送 "POST"
你还必须将@PathParam 更改为@FormParam 才能起作用(@QueryParam 也会起作用,但因为它是POST,所以最好使用@FormParm) .