Ressources
GET
- préciser le type du contenu lu
- préciser le code de retour (200, 404)
- si un
idest précisé chercher l’utilisateur - sinon retourner l’ensemble des utilisateurs
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pathInfo = req.getPathInfo();
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
if (pathInfo == null || pathInfo.equals("/")) {
// Return all users
Collection<User> users = userDB.values();
resp.getWriter().write(objectMapper.writeValueAsString(users));
} else {
// Get a specific user by ID
try {
int userId = Integer.parseInt(pathInfo.substring(1));
User user = userDB.get(userId);
if (user != null) {
resp.getWriter().write(objectMapper.writeValueAsString(user));
} else {
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
resp.getWriter().write("{\"error\":\"User not found\"}");
}
} catch (NumberFormatException e) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("{\"error\":\"Invalid user ID\"}");
}
}
}POST
- préciser le type du contenu retourné
- préciser le code de retour (201)
- retourner l’utilisateur créé
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
BufferedReader reader = req.getReader();
User newUser = objectMapper.readValue(reader, User.class);
newUser.setId(userIdCounter++);
userDB.put(newUser.getId(), newUser);
resp.setStatus(HttpServletResponse.SC_CREATED);
resp.setContentType("application/json");
resp.getWriter().write(objectMapper.writeValueAsString(newUser));
}curl -X POST http://localhost:8080/R401-EXO-restapi-with-servlet/users \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "email": "john@example.com"}'
req.getReader()
BufferedReader reader = req.getReader(); // Retrieves the body of the request as character data using a BufferedReader.
User newUser = objectMapper.readValue(reader, User.class);