SHUBHAM SHARMA
SHUBHAM SHARMA

Reputation: 1

How to return message in Resposne Body?

I have to retuen the message "Data Added" in the api in ResponseBody Create a api while enters student data /newStudent

Request Body:

{
"name":"Shubham",
"rollno":22,
"studentid":1
}

Response:

{
"status":"OK",
"message":"Data Added"
}

@RequestMapping("/studentdata")
@ResponseBody
@ResponseStatus(HttpStatus.OK )

Upvotes: 0

Views: 1240

Answers (5)

SHUBHAM SHARMA
SHUBHAM SHARMA

Reputation: 1

It worked for me like this in Response class:

public class Response {
    private String statusCode;
    private String statusMsg;

    public String getStatusCode() {
        return statusCode;
    }

    public void setStatusCode(String statusCode) {
        this.statusCode = statusCode;
    }

    public String getStatusMsg() {
        return statusMsg;
    }

    public void setStatusMsg(String statusMsg) {
        this.statusMsg = statusMsg;
    }
}

In controller:

@PostMapping("/newStudent")
    public ResponseEntity<Response> saveStudent(@RequestBody Student student) {
        Student save = service.save(student);
        Response response = new Response();
        response.setStatusCode("200");
        response.setStatusMsg("Data Added");
        return ResponseEntity.status(HttpStatus.CREATED).body(response);
    }

Upvotes: 0

Banky Alani
Banky Alani

Reputation: 1

import org.json.simple.JSONObject;

@ResponseBody
@RequestMapping(value = "/studentdata", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public String message(@RequestBody String transaction) {
  String response = "";

  JSONObject obj = new JSONObject();
  obj.put("status", "OK");
  obj.put("message", "Data Added");
  response = obj.toJSONString();
  
  return response;
}

Upvotes: 0

Manir Mahamat
Manir Mahamat

Reputation: 106

First of all you should create a Response class which will hold status code and your custom message like the following class :

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Response {
  private String statusCode;
  private String statusMsg;
}

So in your controller where you post the object use ResponseEntity which can allow you to customize HTTP response methods. For example:

 @Autowired
 private StudentRepository studentRepository;

 @PostMapping("/newStudent")
 public ResponseEntity<Response> saveEmployee(@RequestBody Student 
  student){
    studentRepository.save(student);
    Response response = new Response();
    response.setStatusCode("200");
    response.setStatusMsg("Your message");
    return ResponseEntity.status(HttpStatus.CREATED).body(response);
}

Upvotes: 1

Ali Raza
Ali Raza

Reputation: 1063

This is how to return custom object in response.

router.post("/newStudent", async (req, res) => {
  const { name, rollNo, studentId } = req.data;

  // POST data to DB
  const result = await AddStudentDataToDB({ name, rollNo, studentId });

  res.status(200).json({
    status: 'ok',
    message: 'Data Added'
  });
});

Upvotes: 0

Youcef LAIDANI
Youcef LAIDANI

Reputation: 59986

You can create a custom response class that looks like this:

class CustomResponse {
   private String status;
   private String message;
   // Constructor/Getters/Setters
}

Then in your controller return ResponseEntity for example:

CustomResponse response = new CustomResponse("OK", "Data Added");
return ResponseEntity.ok(response); // the ok will return HTTP Status 200

Or if you want another HttpStatus, then you can use for example:

return new ResponseEntity<>(response, HttpStatus.CREATED);
                                      ^^^^^^^^^^^^^^^^^^

Upvotes: 2

Related Questions