一. JSON格式
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于一个子集的JavaScript编程语言,使用人类易于阅读的文本格式来存储和表示数据。尽管名字中有“JavaScript”,但JSON是语言无关的,几乎所有的现代编程语言都支持JSON编码和解码。
一个简单的JSON对象示例:
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"city": "New York",
"zipcode": "10001"
}
}
二. Curl命令
2.1 Curl
Curl 是一个非常强大的命令行工具,用于从服务器传输数据或向服务器传输数据。它支持多种协议,包括HTTP、HTTPS、FTP等。Curl常用于测试RESTful API,获取网页内容,上传文件等。
基本语法:
curl [options] [URL]
例如,获取某个网站的内容:
curl http://example.com
当你需要与API交互时,比如获取JSON格式的数据,你可以这样做:
curl -X GET http://localhost:11434/api/tags
这里的-X
选项指定请求的方法(GET、POST等),默认为GET。
curl这里可以展开说一下,与API交互就比如说常用的REST API
2.2 REST API
REST(Representational State Transfer)API 是一种设计风格,用于构建网络服务。它利用标准的 HTTP 方法(如 GET、POST、PUT、DELETE 等)来操作资源,并通过 URL 来标识这些资源。REST API 的设计理念是基于 Web 的架构,使得它们易于理解和使用。
-
资源(Resources):
- 在 REST 中,一切都被视为资源。资源可以是任何实体,例如用户、产品、订单等。
- 每个资源都有一个唯一的标识符(通常是 URL)。例如,
/users/123
可以表示 ID 为 123 的用户。
-
HTTP 方法:
- GET:用于检索资源。例如,
GET /users/123
获取 ID 为 123 的用户信息。 - POST:用于创建新资源。例如,
POST /users
创建一个新的用户。 - PUT:用于更新现有资源。例如,
PUT /users/123
更新 ID 为 123 的用户信息。 - DELETE:用于删除资源。例如,
DELETE /users/123
删除 ID 为 123 的用户。
- GET:用于检索资源。例如,
-
状态码(Status Codes):
- REST API 使用 HTTP 状态码来表示请求的结果。
200 OK
:请求成功。201 Created
:资源已成功创建。400 Bad Request
:请求无效或格式错误。404 Not Found
:请求的资源不存在。500 Internal Server Error
:服务器内部错误。
- REST API 使用 HTTP 状态码来表示请求的结果。
-
无状态性(Statelessness):
- REST API 是无状态的,这意味着每个请求都必须包含处理该请求所需的所有信息。服务器不会存储客户端的状态信息,这有助于提高可扩展性和可靠性。
-
示例
假设我们有一个简单的在线书店 API,以下是一些示例请求:
-
获取所有书籍列表:
GET /books
-
获取特定书籍详情:
GET /books/123
-
创建新书籍:
POST /books { "title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "price": 10.99 }
-
更新书籍信息:
PUT /books/123 { "title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "price": 12.99 }
-
删除书籍:
DELETE /books/123
-
这些API确实很好,但是不能直接在Terminal应用这些API,所以需要像Curl这样的工具
1. GET 请求
获取资源数据。
curl -X GET http://localhost:11434/api/tags
2. POST 请求
创建新资源。
curl -X POST http://localhost:11434/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "age": 30}'
3. PUT 请求
更新现有资源。
curl -X PUT http://localhost:11434/api/users/123 \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "age": 31}'
4. DELETE 请求
删除资源。
curl -X DELETE http://localhost:11434/api/users/123
三. 轻量化处理工具:jq
jq 是一个命令行工具,用于处理JSON数据。它可以用来解析、过滤、映射和转换JSON数据。对于需要快速查看或处理JSON数据的情况,jq
是一个非常好的选择。
安装jq
(根据你的操作系统):
sudo apt-get install jq
使用jq
的例子:
-
美化JSON输出:将
curl
的结果通过管道传递给jq
进行格式化。curl http://localhost:11434/api/tags | jq .
-
提取特定字段:假设你只对模型的名字和大小感兴趣
curl http://localhost:11434/api/tags | jq '.models[] | {name, size}'
-
过滤数据:仅显示满足特定条件的数据,如大小大于某个值的模型。
curl http://localhost:11434/api/tags | jq '.models[] | select(.size > 5000000000) | {name, size}'
通过结合使用curl
和jq
,你可以更高效地与API交互,并轻松处理返回的JSON数据。这在开发和调试过程中特别有用。
下面的第一个是直接拿回来的json数据,没有使用任何工具进行处理
这一个使用了jq工具进行处理,具有了明显的层次感
提取models数组,只关心数组中的name和model两个关键字