我使用scala和play框架开发Rest API。
在我的产品控制器中,我对收到的参数进行了验证 如果它们由于某种原因而失败,我想在函数中间响应BadRequest,而不是在最后一行作为scala工作... 在下面的代码中 - 代码继续运行到Ok行..这是错误的,我想返回!
def getProduct(lang: String, t: String, ids: String) = Action {
val productIdsList = ids.split(",").toList
if (productIdsList.length.equals(1) && productIdsList(0).equals("")) //Validate input params are product Ids and not empty !
{
var errorResponse:ErrorResponse[String] = ErrorResponse(ErrorCode.GeneralError, "No products IDs", 500)
BadRequest(Json.toJson(errorResponse))//maybe return BadRequest(Json.toJson(errorResponse) ??
}
val results = productService.getProducts(GetProductsRequest(lang,t,productIdsList));
Ok(Json.toJson(results))
// TODO: handle error
}
如果实施为:
return BadRequest(...)
它回复错误:
"method getProduct has return statement; needs result type"
我理解这是不好的做法,那么退出函数而不完成它的最佳做法是什么(而不是抛出异常......)
答案 0 :(得分:2)
只需添加一个else
分支,就无法继续:
def getProduct(lang: String, t: String, ids: String) = Action {
val productIdsList = ids.split(",").toList
if (productIdsList.length.equals(1) && productIdsList(0).equals("")){ //Validate input params are product Ids and not empty !
var errorResponse:ErrorResponse[String] = ErrorResponse(ErrorCode.GeneralError, "No products IDs", 500)
BadRequest(Json.toJson(errorResponse))//maybe return BadRequest(Json.toJson(errorResponse) ??
}else{
val results = productService.getProducts(GetProductsRequest(lang,t,productIdsList));
Ok(Json.toJson(results))
// TODO: handle error
}
}