POST请求全面剖析练习题回答
来源:7-10 【思考】阶段练习题

慕少6126089
2021-08-15
1. 什么是幂等性?什么是安全性?
幂等性,指同样的操作不管经过多少次调用,返回的数据、或者产生的效果都是一致的,而客户端可以重复调用并且获得同样的结果。
安全性是指,使用 GET 或者 HEAD 请求的时候,都只是读取资源,而不会改变资源。所以说,类似GET, 或者 HEAD这样只是读取资源的操作是安全的。
2. 如何使用 CreatedAtRoute()来创建一个简单的第三等级的成熟度?
return CreatedAtRoute(
"GetTouristRouteById",
new { touristRouteId = touristRouteToReture.Id },
touristRouteToReture
);
3. 如何使用 ASP .NET Core 来做数据验证?
(1)给 dto 加上验证规则:
public class TouristRouteForCreationDto
{
[Required(ErrorMessage = "title 不可为空")]
[MaxLength(100)]
public string Title { get; set; }
[Required]
[MaxLength(1500)]
public string Description { get; set; }
...
}
(2)属性级别数据验证。使用接口 IValidatableObject
public IEnumerable<ValidationResult> Validate(
ValidationContext validationContext)
{
if(Title == Description)
{
yield return new ValidationResult(
"路线名称必须与路线描述不同",
new[] { "TouristRouteForCreationDto" }
);
}
}
(3)类级别数据验证。
public class TouristRouteTitleMustBeDifferentFromDescriptionAttribute: ValidationAttribute
{
protected override ValidationResult IsValid(
object value,
ValidationContext validationContext
)
{
var touristRouteDto = (TouristRouteForCreationDto)validationContext.ObjectInstance;
if (touristRouteDto.Title == touristRouteDto.Description)
{
return new ValidationResult(
"路线名称必须与路线描述不同",
new[] { "TouristRouteForCreationDto" }
);
}
return ValidationResult.Success;
}
}
4. 什么是状态码422?如何输出状态码422?
IServiceCollection services 后面继续点
.ConfigureApiBehaviorOptions(setupAction =>
{
setupAction.InvalidModelStateResponseFactory = context =>
{
var problemDetail = new ValidationProblemDetails(context.ModelState)
{
Type = "无所谓",
Title = "发生了一个或多个错误",
Status = StatusCodes.Status422UnprocessableEntity,
Detail = "See the errors property for details.",
Instance = context.HttpContext.Request.Path
};
problemDetail.Extensions.Add("traceId", context.HttpContext.TraceIdentifier);
return new UnprocessableEntityObjectResult(problemDetail)
{
ContentTypes = { "application/problem+json" }
};
};
});
写回答
1回答
-
阿莱克斯刘
2021-08-22
回答正确!
00
相似问题