//获取单个旅游路线中的单张照片 加{}表示get路由要传入的参数
[HttpGet("{pictureId}",Name = "GetPicture")]
public IActionResult GetPicture(Guid touristRouteId ,int pictureId)
{
//判断路线是否存在
if (!_touristRouteRepository.TouristRouteExists(touristRouteId))
{
return NotFound("旅游路线不存在!");
}
//判断照片是否存在
var pictureFromRepo = _touristRouteRepository.GetPicture(pictureId);
if (pictureFromRepo == null) {
return NotFound("照片不存在!");
}
return Ok(_mapper.Map<TouristRoutePictureDto>(pictureFromRepo));
}
[HttpPost]
public IActionResult CreateTouristRoutePicture(
[FromRoute] Guid touristRouteId,
[FromBody] TourisRoutePictureForCreationDto tourisRoutePictureForCreationDto
)
{
//判断路线是否存在
if (!_touristRouteRepository.TouristRouteExists(touristRouteId))
{
return NotFound("旅游路线不存在!");
}
var pictureModel = _mapper.Map<TouristRoutePicture>(tourisRoutePictureForCreationDto);
_touristRouteRepository.AddTouristRoutePicture(touristRouteId, pictureModel);
_touristRouteRepository.Save();
var pictureToReturn = _mapper.Map<TouristRoutePictureDto>(pictureModel);
return CreatedAtRoute(
"GetPicture",
new {
touristRouteId = pictureModel.TouristRouteId,
pictureId = pictureModel.Id
},
pictureToReturn
);
}
我返回500是
CreatedAtRoute(
“GetPicture”,
new {
touristRouteId = pictureModel.TouristRouteId,
pictureId = pictureModel.Id
},
pictureToReturn
);
在这个函数体里面 ,把第二个参数里面的变量多写了一个字母
先给你看下我控制器的路由格式
[Route(“api/touristRoutes/{touristRouteId}/pictures”)]
切记 new {
touristRouteId = pictureModel.TouristRouteId,
pictureId = pictureModel.Id
}
里面的参数touristRouteId 一定要和路由里面的{touristRouteId}保持路由一致,不然他不知道你把这个值给谁。
保持一致就正常返回201了。可以在Loction中拿到返回的路由。
那个routeName就是 [HttpGet("{pictureId}",Name = “GetPicture”)]的Name