Java 为函数调用设计RESTAPI

Java 为函数调用设计RESTAPI,java,spring,rest,Java,Spring,Rest,因此,我正在构建一个RESTAPI,它将负责在一个特殊的硬件上运行各种作业 所以我知道REST用于访问资源,而不是调用函数。 那么,设计负责调用函数的API的建议和最佳方法是什么呢 例如,我将有一个apijob/run,如果作业成功运行,它将返回作业的PID。 我还有一个job/{pid}用于访问给定作业的信息。以及用于停止所述作业的作业/cancel/{pid} 那么,设计API的建议和最佳方法是什么呢 负责调用函数 创建用户:POST/users 删除用户:删除/users/1 获取所有用户

因此,我正在构建一个RESTAPI,它将负责在一个特殊的硬件上运行各种作业

所以我知道REST用于访问资源,而不是调用函数。
那么,设计负责调用函数的API的建议和最佳方法是什么呢

例如,我将有一个api
job/run
,如果作业成功运行,它将返回作业的PID。 我还有一个
job/{pid}
用于访问给定作业的信息。以及用于停止所述作业的
作业/cancel/{pid}

那么,设计API的建议和最佳方法是什么呢 负责调用函数

  • 创建用户:POST/users
  • 删除用户:删除/users/1
  • 获取所有用户:获取/users
  • 获取一个用户:获取/users/1
  • 记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    更新记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    删除记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    那么,设计API的建议和最佳方法是什么呢 负责调用函数

  • 创建用户:POST/users
  • 删除用户:删除/users/1
  • 获取所有用户:获取/users
  • 获取一个用户:获取/users/1
  • 记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    更新记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    删除记录

    糟糕的设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    
    首选设计

    GET /FetchUsers                  // To fetch all records
    GET /getAllUsers/12              // To fetch specific records
    
    GET /users                      //To fetch all records
    GET /users/12                   // To fetch specific records
    
    POST /createUsers                //To create users
    GET  /createrecordforUsers      //To fetch all records
    
    POST /users                     //To create users records
    
    PUT  /updateUsersid               // To update user
    POST /id/modifyuser              // To update users
    
    PUT /users/:id                     // To update users
    
    DELETE /deleteuser/id              //To delete users
    POST   /id/removeusers            //To delete users
    
    DELETE /users/:id               // To delete users
    

    应考虑以下几点

  • 平台独立性。(无论API是如何在内部实现的,任何客户端都应该能够调用API)
  • 服务演进。(web API应该能够独立于客户端应用程序演进和添加功能。)
  • 资源有一个标识符,它是唯一标识该资源的URI。例如,特定客户订单的URI可能是:

    请求:获取-> 答复: JSON {“orderId”:1111,“amount”:99.90,“productId”:1,“quantity”:1}

    最常见的操作是GET、POST、PUT、PATCH和DELETE

    • GET在指定的URI处检索资源的表示形式。响应消息的主体包含所请求资源的详细信息

    • POST在指定的URI处创建新资源。请求消息的主体提供了新资源的详细信息。请注意,POST还可用于触发实际上不创建资源的操作

    • PUT在指定的URI处创建或替换资源。请求消息的正文指定要创建或更新的资源
    • 修补程序执行资源的部分更新。请求主体指定要应用于资源的更改集
    • 删除删除指定URI处的资源
    RESTAPI使用无状态请求模型。HTTP请求应该是独立的,并且可能以任何顺序发生,因此在请求之间保留瞬态信息是不可行的

    我们可以使用超媒体链接返回响应,因为spring boot具有此功能

    [弹簧靴:]

    (更好)

    (避免)

    • 资源不必基于单个物理数据项。例如,订单资源可能在内部实现为关系数据库中的多个表,但作为单个实体呈现给客户机。避免创建简单镜像数据库内部结构的API
    • 客户端不应暴露于内部实现
    • 避免要求比(订单/集合/项目/详细信息)更复杂的资源URI
    摘要

    - Pagination Support  : /orders?limit=25&offset=50
    - Error handing : 
    - API Version (avoid as much as if possible)
    
    

    参见此处,应考虑以下几点

  • 平台独立性。(无论API是如何在内部实现的,任何客户端都应该能够调用API)
  • 服务演进。(web API应该能够独立于客户端应用程序演进和添加功能。)
  • 资源有一个标识符,它是唯一标识该资源的URI。例如,特定客户订单的URI可能是:

    请求:获取-> 答复: JSON {“orderId”:1111,“amount”:99.90,“productId”:1,“quantity”:1}

    最常见的操作是GET、POST、PUT、PATCH和DELETE

    • GET在指定的URI处检索资源的表示形式。响应消息的主体包含所请求资源的详细信息

    • POST在指定的URI处创建新资源。请求消息的主体提供了新资源的详细信息。请注意,POST还可用于触发实际上不创建资源的操作

    • PUT在指定的URI处创建或替换资源。请求消息的正文指定要创建或更新的资源
    • 修补程序执行资源的部分更新。请求主体指定要应用于资源的更改集
    • 删除删除指定URI处的资源
    RESTAPI使用无状态请求模型。HTTP请求应该是独立的,并且可能以任何顺序发生,因此在请求之间保留瞬态信息是不可行的

    我们可以使用超媒体链接返回响应,因为spring boot具有此功能

    [弹簧靴:]

    (更好)

    (避免)

    • 资源不必基于单个物理数据项。例如,订单