Introduction 在設計RestAPI時,並非所有domain操作都符合CRUD;例如,model中資料的同步(sync)、有transaction的行如轉換(transfer)、搬移(move)、複製(copy)等;因此做些案例研究看是否能找尋到自己能滿意的做法。本篇文章是根據研究結果,分享針對操作(action)做resource modeling的心得。 Model the action as a service resource action本身就是一種service,如果能把它model成一個service resource,是再好不過的。最常見的例子是login/logout,可以model為sessions,以 vCloud 為例: POST https://vcloud.example.com/api/sessions DELETE https://vcloud.example.com/api/sessions 在伺服器管理的domain中,可能有像修改firmware設定、更新firmware或掃描硬體等操作,這些該如何model為resource呢? 首先是修改firmware設定,以 HPE Server Management API 為例,它將firmware種類model為一種resource,而設定是它的sub-resource: GET /Systems/1/BIOS/Settings PATCH /Systems/1/BIOS/Settings 接著是更新firmware,以Dell ASM REST API為例,使用store resource的方式去操作: PUT /ManagedDevice/firmware 最後是掃描硬體,以RHEL Virtualization為例,透過post去新增一個discover的sub-resource(task): POST /api/hosts/2ab5e1da-b726-4274-bbf7-0a42b16a0fc3/iscsidiscover HTTP/1.1 Accept: application/xml Content-Type: application/xml <action> <iscsi> <address>m...