сразу отвечу на вопрос, что Required у него стоит для Swagger'a и убирать его не хотелось бы
services.Configure<ApiBehaviorOptions>(options =>
{
options.SuppressModelStateInvalidFilter = true;
});
public sealed class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
where TRequest : class, IRequest<TResponse>
{
private readonly IEnumerable<IValidator<TRequest>> validators;
public ValidationBehavior(IEnumerable<IValidator<TRequest>> validators)
{
this.validators = validators;
}
public async Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
{
if (!validators.Any())
{
return await next();
}
var errors = new List<ValidationFailure>();
var context = new ValidationContext<TRequest>(request);
foreach (var validator in validators)
{
var validationResult = await validator.ValidateAsync(context);
if (validationResult.Errors != null && validationResult.Errors.Count > 0)
errors.AddRange(validationResult.Errors);
}
if (errors.Any())
{
throw new ValidationException(errors);
}
return await next();
}
}
public class ApiExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
// Тут отдаете уже стандартизированный ответ на варианты ошибок с правильно прописанным Status Code
}
}
А как собрать MAUI проект под дистрибутивы GNU\Linux? Возможно ли? Какие есть способы?
Даже Windows Phone нет
А как собрать MAUI проект под дистрибутивы GNU\Linux?
Какие есть способы?
const response = axios.post("https://translate.api.cloud.yandex.net/translate/v2/translate",
// Это что за новый синтаксис такой?
json = JSON.stringify(body),
headers = headers
)
const response = axios.post("https://translate.api.cloud.yandex.net/translate/v2/translate", {
body: JSON.stringify(body), // В необходимости JSON.stringify тоже не уверен
headers: headers
})
public class AuthParams
{
public string Email { get; set; }
public string Password { get; set; }
}
public ActionResult<User> GetUserByEmail([FromBody]model AuthParams)
services
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});