带有路由参数、标头且无正文的 FastEndpoints PATCH

问题描述 投票:0回答:1
我想做的是将 PATCH 调用发送到具有路由参数但也需要标头但没有正文的端点。

public class TestRequest { [FromHeader("x-correlation-id")] public Guid CorrelationId { get; set; } [BindFrom("EntityId")] public Guid EntityId { get; set; } }
public sealed class TestEndpoint : Endpoint<TestRequest>
{
    public override void Configure()
    {
        Patch("{EntityId}/fulfill");
    }

    public override async Task HandleAsync(TestRequest req, CancellationToken cancellationToken)
    {
        await SendOkAsync(cancellationToken);
    }
}
上面显示了 Swagger UI 中的 2 个属性,但是当我调用它时,我得到 415 Unsupported Media Type,据我所知,这是返回的,因为 FastEndpoints 

Endpoint<T>

 发送了一个正文,即使它是空的。如果我手动将属性作为路由参数和标头发送,并设置 
Content-type: application/json
 标头,我可以验证这一点,这反过来会返回 JsonSerializer 错误,因为正文为 null 并且不是 json 格式。

我也尝试过使用

EndpointWithoutRequest

 但这不会将任何模型作为请求,因此无法设置 
CorrelationId
 属性,并且我找不到任何方法在端点中设置它。

我想找到一种在 SwaggerUi 中显示所有标头属性和路由参数的方法,并且能够使用

发送简单的卷曲

curl -X 'PATCH' \ '.../72423509-c29b-4735-862a-9ebdd0489c05/fulfill' \ -H 'x-correlation-id: 72423509-c29b-4735-862a-9ebdd0489c05'
    
asp.net-core swagger swagger-ui fast-endpoints
1个回答
0
投票
FE的创始人给出了答案。

https://github.com/FastEndpoints/FastEndpoints/issues/492#issuecomment-1740210893

public override void Configure() { Put("/settings/{Id}/toggle"); Description(x => x.Accepts<ToggleSettingRequest>()); AllowAnonymous(); }
    
© www.soinside.com 2019 - 2024. All rights reserved.