Reputation: 1
I have created a project with spring boot and MongoDB as database. I am trying to hit a get request to fetch the data that I have saved in the database. For fetching that I am passing an id from the from the request but the id that I am getting in the RestController method is different. Please tell me why that is the case.
Here is the object with objectId in the database:
{
_id: ObjectId('66d49f49199a3f1a71d67fc8'),
title: 'Johnny',
content: 'Flame On!',
_class: 'net.engineeringDigest.journalApp.entity.JournalEntry'
}
Object in the mongodb database
This is the GET request:
http://localhost:8080/journalV2/id?id=66d49f49199a3f1a71d67fc8
Here I am passing the id as 66d49f49199a3f1a71d67fc8
This is the RestController method with the Get Mapping
@GetMapping("/id")
public JournalEntry getJournalEntryById(ObjectId id) {
return journalEntryService.findById(id).orElse(null);
}
RestController Method with Get Mapping
And the id I am getting in the method is a random one everytime. For eg:
66d5b4596a652065f5f0624d
I am not sure what to change in this. I have other method with GetMapping for which this is working:
But I want the above way to work too.
Upvotes: 0
Views: 48
Reputation: 17
In the given GET Request
http://localhost:8080/journalV2/id?id=66d49f49199a3f1a71d67fc8
the id is sent as a parameter.
Therefore you have to alter the GetMapping like this:
@GetMapping("/id")
public JournalEntry getJournalEntryById(@RequestParam("id") ObjectId id)
{
return journalEntryService.findById(id).orElse(null);
}
The @RequestParam annotation is used to obtain the parameters from the Http requests.
You can refer this for more information about @RequestParam.
Upvotes: 0
Reputation: 178
Looks like, the issue lies in the way the id is extracted from the URL and converted to a Java object in the GET request method.
Use the @PathVariable annotation to bind the id from the URL to the method parameter.
Updated code,
@GetMapping("/{id}")
public JournalEntry getJournalEntryById(@PathVariable ObjectId id) {
return journalEntryService.findById(id).orElse(null);
}
Upvotes: 0