Метод не разрешен REST Java при попытке сделать POST - PullRequest
0 голосов
/ 17 апреля 2020

Я просто хочу создать простой сервис REST, и он использует @GET и @POST. для функции @GET все в порядке, но для @POST, когда я хочу создать нового пользователя на моем сервере, браузер просто насыщается (МЕТОД НЕ РАЗРЕШЕН). Я прочитал так много статей о том, как исправить эту ошибку, но пока ничего не получил.

Мой код для @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

Как вы видите, я также пытался так много обработчиков исключений.

Может кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 17 апреля 2020
  1. , если вы введете свой URL в поле URL-адреса браузера, он не будет работать, поскольку браузер отправит запрос «GET». Таким образом, вы должны использовать клиент, который позволит вам отправить «POST», как PostMan. Или напишите свою собственную маленькую функцию httpConnection, которая отправляет «POST»

  2. Вам также нужно изменить @PathParam на @FormParam, чтобы он работал (@QueryParam также будет работать, но потому что он POST, лучше использовать @FormParm).

1 голос
/ 17 апреля 2020

Доступ к URL напрямую через браузер может создать только запрос Get, а не POST-запрос

Вам следует

  1. Создать HTML Форму, установить действие для URL-адреса службы с помощью метода POST , а затем отправьте его.
  2. Используйте Rest Client как почтальон для доступа к вашему сервису методом POST.
  3. Напишите свой собственный Http-клиент, используя java. net .http api или просто используйте одну из удобных библиотек / фреймворков (как у Spring есть RestTemplate).
...