一个关于 RestFul Api 的示例(符源码)

逄嘉木
2023-12-01

前言

  前面已经对 RestFul Api 做了一个简单的示例(.Net Core 中的一个简单 RestFul Api 演示),这里本文就关于 RestFul Api 做了一个实践性的开发,以职工信息管理为背景作此演示。
  此实践案例,其中包括资源的新增、删除(单个删除、批量删除)、修改、查询(单个查询、关键字查询)等。做了开发这么久,领悟到最难的其实是最基础的,所以作此总结。同时对新手朋友掌握 WebApi 的开发能够起到启蒙与入门的作用。

源码

GitHub 源码: yangdawen8088/WebApiDemo
Gitee 源码: Wen Yang / WebAPIDemo

Api Docs

新增资源 POSThttps://localhost:5001/api/ApiDemo

  请求: Body 中的请求参数为 JSON 数据,如下所示:

{
    "WorkerName":"小张",
    "JobNum":"20210812002"
}

  响应: 创建资源成功返回创建的资源 JSON 对象,如下所示:

{
    "id": "2b9b0a2b-89f8-4d6e-af93-af068222d7a7",
    "workerName": "小张",
    "age": null,
    "gender": null,
    "salary": null,
    "department": null,
    "jobNum": "20210812002"
}

删除单个资源 DELETEhttps://localhost:5001/api/ApiDemo/{workerId}

  请求: 发送 DELETE 请求,URL中携带删除的资源的 ID,例如:https://localhost:5001/api/ApiDemo/024b04a6-6f7f-4342-b13a-d959096551e2
  响应: 响应 204 状态码,表示数据删除成功。

批量删除资源 DELETEhttps://localhost:5001/api/ApiDemo

  请求: 发送 DELETE 请求,Body 中的请求参数为一个 GUID 字符串的数组,如下所示:

[
    "46b82108-6fa7-47c5-b095-f4e9c4519839",
    "f9a450dc-1ba8-447f-8297-03c4a47e9123"
]

  响应: 响应 204 状态码,表示数据删除成功。

修改资源 PATCHhttps://localhost:5001/api/ApiDemo/{workerId}

  请求: 发送 PATCH 请求,Body 中为一个 JSON 格式的 Worker 对象,如下所示:

{
    "workerName": "小军",
    "age": 54,
    "department": "fdsjafhdskajfsdafdsa",
    "gender": true
}

  响应: 响应 204 状态码,表示数据更新成功。

查询所有资源 GEThttps://localhost:5001/api/ApiDemo

  发送 GET 请求,返回所有数据:

[
    {
        "id": "6487d36d-33fb-4059-9a1f-4c1c5884c682",
        "workerName": "张三",
        "age": 18,
        "gender": true,
        "salary": 5000,
        "department": "IT部门",
        "jobNum": "20210723001"
    },
    {
        "id": "356305cf-110f-43d6-9a1b-b82f8200404b",
        "workerName": "李四",
        "age": 20,
        "gender": true,
        "salary": 6000,
        "department": "市场部",
        "jobNum": "20210723002"
    }
]

根据 ID 查询资源 GEThttps://localhost:5001/api/ApiDemo/{workerId}

  发送 GET 请求, URL : https://localhost:5001/api/ApiDemo/6487d36d-33fb-4059-9a1f-4c1c5884c682
  响应结果如下所示:

{
    "id": "6487d36d-33fb-4059-9a1f-4c1c5884c682",
    "workerName": "张三",
    "age": 18,
    "gender": true,
    "salary": 5000,
    "department": "IT部门",
    "jobNum": "20210723001"
}

根据关键字查询资源 GEThttps://localhost:5001/api/ApiDemo?keyWord={keyWord}

  发送 GET 请求, URL : https://localhost:5001/api/ApiDemo?keyWord=张
  响应 WorkerName 中含有“张”的数据,结果如下所示:

[
    {
        "id": "6487d36d-33fb-4059-9a1f-4c1c5884c682",
        "workerName": "张三",
        "age": 18,
        "gender": true,
        "salary": 5000,
        "department": "IT部门",
        "jobNum": "20210723001"
    }
]

The ended

  案例中似乎有一个 Api 不太满足 RestFul Api 的设计风格,如果您发现了可以评论区指出来,或者有什么好的方案可以分享出来。

 类似资料: