【发布时间】:2021-01-29 18:45:10
【问题描述】:
该应用程序需要注册驱动程序及其位置。有两个api,一个用来注册驱动,一个用来保存位置。
API 是
-
POST /api/v1/driver/register/ -
POST /api/v1/driver/:id/sendLocation/
第一个api会请求,响应结构如下
请求:
{
"name": "Rakesh123",
"email":"rakesh@abc1.com",
"phone_number":9876899979,
"license_number":"DL12CDRWG1",
"car_number":"DL1T43241"
}
回应:
{
"driverId": 2,
"name": "Rakesh123",
"email": "rakesh@abc1.com",
"phone_number": "9876899979",
"license_number": "DL12CDRWG1",
"car_number": "DL1T43241",
"location": null
}
在第二个 api 中,":id" 将是接收到的驱动程序 ID,并包含带有纬度和经度的请求正文
请求:
{
"latitude": 12.972442,
"longitude": 77.580643
}
我在从请求中读取“:id”参数时遇到问题。我尝试打印请求 URI 值,请求就是这样来的
/api/v1/driver/$id/sendLocation/
方法写如下
1.
@PostMapping("/register")
public ResponseEntity<?> registerDriver(@RequestBody DriverDetails driver){
responseMap = new HashMap<>();
try {
DriverDetails registeredDriver = service.registerDriver(driver);
responseMap.put("driver", registeredDriver);
responseEntity = new ResponseEntity<>(responseMap, HttpStatus.CREATED);
}catch(Exception e) {
responseMap.put("status", "failure");
responseMap.put("reason", e.getMessage());
responseEntity = new ResponseEntity<>(responseMap, HttpStatus.BAD_REQUEST);
}
return responseEntity;
}
@PostMapping("/{id}/sendLocation")
public ResponseEntity<?> saveDriverLocation(@PathVariable String id, @RequestBody Location location){
responseMap = new HashMap<>();
try {
service.addLocation(Integer.parseInt(id), location);
responseMap.put("status", "success");
responseEntity = new ResponseEntity<>(responseMap, HttpStatus.ACCEPTED);
}catch(Exception e) {
responseMap.put("status", "failure");
responseMap.put("reason", e.getMessage());
responseEntity = new ResponseEntity<>(responseMap, HttpStatus.BAD_REQUEST);
}
return responseEntity;
}
感谢帮助
【问题讨论】:
标签: spring-boot http-post microservices url-parameters