是否 restful 请求主体带有某些调用所需的可选参数

Is it restful to have request body with optional parameters that will be required for some calls

我想为付款构建一个休息 api,但请求正文将包含基于付款类型的参数。我不确定是否 restful 具有某些支付类型所需的可选参数。这是示例端点详细信息,

POST /clients/{id}/payments/{type}

{
    amount: integer,
    card_details: {
        number: string,
        expiry: string
    },
    bank_details: {
        bsb: string,
        account_number: string
    },
    reference: string
}

bank_details 和 card_details 并非始终都需要,但是如果付款类型是信用卡,则需要信用卡详细信息,如果类型是银行存款,则需要银行详细信息。 我觉得这种做法并不理想。有没有更好的方法来实现这个或者使用这种方法是否合适? 希望我已经用所需的所有详细信息提出了问题。非常感谢您的建议。

The bank_details and card_details are not required all the time, however if the payment type is credit card it would require card_details and if the type is bank deposit then bank_details are required.

据我了解,您的应用程序允许客户端创建具有不同表示的不同资源。这很好。根据RFC 7231, the POST方法请求目标资源根据资源自己的特定语义处理请求中包含的表示。