【问题标题】:Requests / Responses DTO objects in PlayPlay 中的请求/响应 DTO 对象
【发布时间】:2014-04-04 14:39:48
【问题描述】:

我有一个非常简单的问题。

在 Java 代码中,我曾经使用数据传输对象进行请求/响应。

例如,在我的 Spring webapp 中,我创建了一些请求 dto,例如

public class SaveOfficeRequest {
    private String officeName;
    private String officePhone;
    private String officeAddress;

    /* getters / setters */
}

之后我有了带有“映射”方法的控制器,例如

@ResponseBody
public SaveOfficeResponse saveOffice(@RequestBody SaveOfficeRequest) { ... }

.

每个请求都是 json 请求。当调用某些控制器方法时,我将请求 dto 转换为域 dto 实体并执行一些业务逻辑。

所以!

我应该在基于 Play 框架的新 scala 项目中保存练习吗?

【问题讨论】:

    标签: scala playframework playframework-2.0


    【解决方案1】:

    案例类可用于表示请求和响应对象。通过避免直接在外部接口中使用域对象,这有助于使 API 变得明确、文档化和类型安全,并隔离关注点。

    例如,对于 JSON 端点,控制器操作可以使用如下模式:

    request.body.asJson.map { body =>
      body.asOpt[CustomerInsertRequest] match {
        case Some(req) => {
          try {
            val toInsert = req.toCustomer()  // Convert request DTO to domain object
            val inserted = CustomersService.insert(toInsert)
            val dto = CustomerDTO.fromCustomer(inserted))  // Convert domain object to response DTO
            val response = ... // Convert DTO to a JSON response
            Ok(response)
          } catch {
            // Handle exception and return failure response
          }
        }
        case None => BadRequest("A CustomerInsertRequest entity was expected in the body.")
      }
    }.getOrElse {
      UnsupportedMediaType("Expecting application/json request body.")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 2016-01-08
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多