新建一个文件,放在 post/modules/create/dtos 里面,名字是 create-post.dto.ts ,文件里定义并导出一个类,名字是 CreatePostDto,用它描述一下创建内容的时候提供的主体数据。
添加一个 title 属性,类型是 string,在它上面添加一些验证规则,先用一个 @IsNotEmpty ,一个选项参数,用 message 设置一下错误信息,必须提供内容标题。上面再用一个 @IsString() 规定这个属性的值必须是字符串,一个 message ,错误信息设置成内容标题格式不对。
下面再添加一个 content 属性,类型是 string ,在它上面用 @IsOptional 装饰一下,上面再用一个 @IsString 规定必须是字符串,错误信息设置成内容正文格式不对。
然后添加一个 status,类型是 PostStatus,在上面用一个 @IsEnum ,第一个参数是 PostStatus,再提供一个选项参数,message 的值是无效的内容状态。
PostCreateController
打开 PostCreateController,在 createPost 这个方法里面添加一个参数,用 @Body 装饰一下,参数的名字是 body,类型是 CreatePostDto。
测试
在 Http 客户端测试一下,直接发送一下这个创建内容请求,这回得到了一个异常响应,在 message 里面有具体的错误信息。
配置一个请求主体,类型是 JSON,准备一个 JSON 数据,里面添加一个 title,它的值就是要发布的内容的标题,比如 静夜思,再提供一个 status,值可以设置成 pending ,发送一下请求,提示无效的内容状态,因为 pending 并不是 PostStatus 这个 enum 里的项目。修改一下它的值,改成 published ,发送一下请求,验证通过,就会得到一个正常的响应。