Как прочитать значение JSON в сервлете? - PullRequest
0 голосов
/ 27 сентября 2019

Я отправляю json как POST на мой URL через почтальона.

Как мне прочитать это значение json в моем сервлете doPOST ()?

input json:

{
    "token":"ABC123"
}

1 Ответ

0 голосов
/ 27 сентября 2019

Ваш документ JSON может быть проанализирован для класса, подобного показанному ниже:

@Data
public class Foo {
    private String token;
}

И, ну, вы могли бы иметь HttpServlet и затем анализируйте JSON, используя ObjectMapper Джексона:

@WebServlet("/foo")
public class FooServlet extends HttpServlet {

    private ObjectMapper mapper = new ObjectMapper();

    @Override
    protected void doPost(HttpServletRequest req,
                          HttpServletResponse resp) throws IOException {

        Foo foo = mapper.readValue(req.getInputStream(), Foo.class);

        // Do something with foo

        resp.setStatus(HttpServletResponse.SC_OK);
    }
}

Но в большинстве реальных приложений это не то, что должен делать.Сервлеты слишком низкоуровневые, и некоторые фреймворки были созданы, чтобы упростить задачу.На самом деле, большинство этих фреймворков построено на основе сервлетов.

JAX-RS

В JAX-RS и в его реализациях (таких как Джерси) у вас будет следующее:

@Path("/foo")
public class FooResource {

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response doSomethingWithFoo(Foo foo) {

        // Do something with foo

        return Response.ok().build();
    }
}

Spring Web MVC

В Spring Web MVC вот что вы можете получить:

@RestController
public class FooController {

    @PostMapping(path = "/foo", consumes = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Void> doSomethingWithFoo(@RequestBody Foo foo) {

        // Do something with foo

        return ResponseEntity.ok();
    }
}

Подробнее о различиях между JAX-RS и Spring Web MVC, см. Этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...