即如果请求的 URI 为 https://api.fcoin.com/v2/orders?...c=value1&b=value2&a=value3,则进行签名时,应先将请求参数按照字母表排序,最终进行签名的 URI 为 https://api.fcoin.com/v2/orders?...HTTP Request GET https://api.fcoin.com/v2/public/symbols 行情 行情概述 行情是一个全公开的 API, 当前同时提供了 HTTP 和 WebSocket...获取推送服务器时间 可以通过 ping 请求时服务器返回的 ts 和 gap 值获取推送服务器时间和数据传输时间差 gap: 推送服务器处理此语句的时间和客户端传输的时间差. ts: 推送服务器当前的时间...HTTP Request GET https://api.fcoin.com/v2/orders 查询参数 参数 默认值 描述 symbol 交易对 states 订单状态 before 查询某个页码之前的订单
参数超出范围:输入超过允许范围的数值(如年龄为 -1 或 200),验证 400 及合理提示。...操作不允许:对只读资源执行写操作(如 GET 接口接收 POST 请求),返回 405 Method Not Allowed。d....依赖条件不满足:下单时库存不足,返回 400 及明确提示(如 "Insufficient stock")。...违反业务规则:转账金额为负数,返回 400 及错误码(如 "Amount must be positive")。e....五、典型错误响应测试用例示例参数错误类测试用例1:必填参数缺失接口:POST /api/users(创建用户)场景:未提供必填字段email输入:{"name": "Alice"}预期响应:状态码:400
使用API设计工具 11. 使用简单序数作为版本 12. 在你的响应体中包括总资源数 13. 接受limit和offset参数 14. 获取字段查询参数 15. 不要在URL中通过认证令牌 16....监控 RESTful HTTP服务必须实现/health和/version和/metricsAPI端点。他们将提供以下信息。 /health 用200 OK状态码响应对/health的请求。...接受limit和offset参数 在GET操作中始终接受limit和offset参数。 应该: GET /shops?offset=5&limit=5 这是因为它对于前端的分页是必要的。 14....获取字段查询参数 返回的数据量也应该考虑在内。添加一个fields参数,只公开API中必需的字段。 例子: 只返回商店的名称,地址和联系方式。 GET /shops?...例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。
有没有能⼒创建出符合 RESTful 风格的API? 是否有能⼒维护 API 接口?当前端或者后台需要修改接⼜时,是否能轻松地修改?前端和后台两个团队是不是很容易合作?是不是可以轻松地进⾏联调?...前后端分离的核⼼:后台提供数据,前端负责显⽰ 前提 RESTful API 统一约束客户端和服务器之间的接口。简化和分离系统架构,使每个模块独立!...中间服务器可以通过启用负载平衡和提供共享缓存来提高系统可扩展性。分层系统也可以执行安全策略。...或fail时,对应的错误信息 } status说明 状态 说明 fail 返回码为 500-599 error 返回码为 400-499 success 其他状态码(1xx、2xx、3xx)...请求参数过多,或携带敏感信息 批量删除,携带一组id信息 文件导出、文件上传
(2图片输出:\)0.134 起(按分辨率) 视觉分析、设计辅助 注意事项: 不可同时使用thinking_level与旧版thinking_budget参数,会返回 400 错误 图片定价随分辨率递增...Gemini 3 会生成表格、流程图等可视化内容,可直接导出为图片 上下文保持:追问时无需重复背景信息,模型自动关联历史对话 多轮优化:对生成结果不满意时,可指令 “更简洁”“补充案例”“调整格式” 3.2...="YOUR_API_KEY") # 定义外部工具(天气查询API) def get_weather(city): weather_api_key = "YOUR_WEATHER_API_KEY"...# 配置工具调用 tools = [ { "name": "get_weather", "description": "查询指定城市的天气信息", "parameters": { "type...,仅使用thinking_level参数 多模态处理失败: 问题:上传大尺寸图片(>10MB)时请求超时 解决:压缩图片至 5MB 以下,或降低media_resolution等级 长上下文处理不完整:
users=1&address=2; (good) Request Method GET:查询资源 POST:创建资源 PUT/PATCH PUT:全量更新资源(提供改变后的完整资源) PATCH...POST请求,一般有两种方式模拟PUT等请求 添加_method参数 /users/1?...GET 非id的参数使用'?'...201 POST 创建资源成功 客户端错误 Code Method Describe 400 ALL 一般是参数错误 401 ALL 一般用户验证失败(用户名、密码错误等) 403 ALL 一般用户权限校验失败...例子 分页 request请求,查询user,每页显示10条,从第10条开始显示(第二页) /users?
users=1&address=2; (good) ---- Request Method GET:查询资源 POST:创建资源 PUT/PATCH PUT:全量更新资源(提供改变后的完整资源...很多客户只支持GET/POST请求,一般有两种方式模拟PUT等请求 添加_method参数 /users/1?...Method GET 非id的参数使用'?'...201 POST 创建资源成功 客户端错误 Code Method Describe 400 ALL 一般是参数错误 401 ALL 一般用户验证失败(用户名、密码错误等) 403 ALL 一般用户权限校验失败...例子 分页 request请求,查询user,每页显示10条,从第10条开始显示(第二页) /users?
过滤信息(Filtering) 如果记录数量很多,API应该提供参数,过滤返回结果。 ?limit=10 指定返回记录的数量 ?offset=10 指定返回记录的开始位置。...,一次和多次更新结果一致 DELETE 非安全 幂等 写操作非安全,一次和多次删除结果一致 三、传统模式 URI 和 RESTful 风格对比 查询 操作 传统 RESTful 查询所有 http:/...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...HTTP/1.1 303 See Other Location: /api/orders/12345 4xx 状态码 4xx 状态码表示客户端错误,主要有下面几种: 400 Bad Request:服务器不理解客户端的请求...客户端请求时,也要明确告诉服务器,可以接受 JSON 格式,即请求的 HTTP 头的ACCEPT属性也要设成application/json。 2.2.
请求所需的一些信息都包含在URL的查询参数、header、body,服务端能够根据请求的各种参数,无需保存客户端的状态,将响应正确返回给客户端。无状态的特征大大提高的服务端的健壮性和可拓展性。...比如通过HTTP返回的数据里面有 [MIME type ]信息,我们从MIME type里面可以知道数据的具体格式,是图片,视频还是JSON,客户端通过body内容、查询串参数、请求头和URI(资源名称...HTTP状态响应码在500-599之间为”fail”,在400-499之间为”error”,其它均为”success”(例如:响应状态码为1XX、2XX和3XX)。...我们可以在Controll中标记Route [Route(“api/orders/{address}/{month}”)] Action中的查询参数就只有金额、排序、年龄。...减少了查询参数、API的可读性和可维护行增强了。 https://example.com/api/orders/beijing/6?
Spring Boot 提供了多种方式来从 HTTP 请求中提取参数,其中 @PathVariable 是一个常用且强大的注解。...@RequestMapping("/users"):指定基础路径为 /users。 @GetMapping("/{id}"):匹配 GET 请求,路径中包含一个动态参数 {id}。...请求示例 客户端发起以下请求: GET /users/123 控制器方法 getUserById 会接收到 userId 为 123,进而查询并返回对应的用户信息。...@PathVariable 与 @RequestParam 的区别 在处理请求参数时,@PathVariable 和 @RequestParam 是两个常用的注解,它们各自适用于不同的场景。...在实际开发中,结合良好的路径设计原则和严格的参数校验,可以最大限度地发挥 @PathVariable 的优势,为用户提供优质的服务体验。
导言:在设计和构建RESTful API时,需要考虑多个方面,包括资源的命名规范、URI的设计、HTTP方法的使用、状态码的处理、错误处理、安全性和身份验证等。...避免使用动词、操作和参数在URI中,而应该将它们作为HTTP方法和查询参数进行处理。示例:GET /api/users/{id}/ordersGET /api/orders?...在API设计中,使用适当的状态码可以提供清晰的响应信息,帮助客户端正确处理请求结果。...示例:200 OK - 请求成功201 Created - 创建成功400 Bad Request - 请求错误404 Not Found - 资源不存在500 Internal Server Error...返回统一的错误响应格式可以帮助客户端更好地处理错误情况。错误响应应该包含错误码、错误消息和可选的错误详细信息。
基础理解 GraphQL 是一种 API 查询语言,允许客户端按需获取数据。与 REST(服务器决定每个端点返回的数据)不同,GraphQL 让客户端精确指定所需数据。...定义 GraphQL API 时,需先定义这些类型: • 对象类型:主数据模型(如 User、Order、Product) • 标量类型:基础数据类型(String、Int、Boolean 等) • 输入类型...查询(Queries):获取数据(类似 REST 的 GET) • 单次查询可请求多个资源 • 字段可无限嵌套 • 始终保持幂等性(不改变数据) 2....变更(Mutations):修改数据(类似 REST 的 POST/PUT/DELETE) • 单次请求可执行多个修改 • 返回更新后的数据 • 顺序执行(不同于查询) 3..../api/users/ GET /api/users//orders GET /api/users//preferences 需发起三次独立请求,且无论是否需要都会获取所有字段。
服务端流式:客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流,直到里面没有任何消息。...可以参考微软的回答: gRPC 流式处理服务与重复字段 对于任何大小受限且能在短时间内(例如在一秒钟之内)全部生成的数据集就用repeated 当数据集中的消息对象可能非常大时,最好是使用流式处理请求或响应传输这些对象...order和goods服务去生成订单 也可以通过api服务查询已经创建的订单, api实际调用order服务查询 启动三个服务 go run goods/main.go go run order/main.go...go run api/main.go 运行结果 # 获取用户为 1 的订单列表 curl --location --request GET '127.0.0.1:8080/orders?..., "msg": "rpc error: code = Unknown desc = 无此商品" } # 查询订单1 curl --location --request GET '127.0.0.1
提升API性能 为I/O操作使用异步处理 而不是: public List GetOrders() { return _context.Orders.ToList(); } 使用...实现速率限制 通过设置请求限制来防止API滥用。...使用后台作业处理长时间运行的任务 用于异步处理任务,而不会阻塞API请求。...将重任务从API请求中分离出来。 6....编写简洁高效的LINQ查询,避免性能陷阱。 监控和分析应用程序,识别并修复瓶颈。 遵循这些最佳实践,确保你的应用程序运行更快,处理更高负载,并提供无缝的用户体验。
动态可扩展性 支持客户端指定请求参数和响应字段,根据需求动态返回数据,避免冗余。 支持多种查询模式 设计接口时兼容常见的分页、过滤、排序等功能,提升接口的灵活性。...通用响应格式: formatResponse方法统一了返回结果的结构,包含code(状态码)、message(信息)和data(数据)。 查询参数解析: 接口支持按user、status筛选订单。...支持根据sortBy参数对结果排序。 提供分页功能,通过page和limit参数控制返回数据的数量。 最终响应: 将筛选、排序、分页后的数据返回给客户端。...前端代码详解 HTTP请求: 使用fetch.fetch模块向后端发送GET请求,params参数用于动态拼接查询条件。 数据处理: 将接口返回的数据存储到orderList中,便于在界面中展示。...每条订单作为展示,显示订单ID、用户和状态。 接口设计的关键点 灵活的查询参数 通过动态查询参数,支持多种组合筛选,提高接口的适配能力。
有些客户端只能使用GET和POST这两种方法。...# GET /articles/published 查询字符串的写法明显更好 # GET /articles?...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...GET /orders/2 HTTP/1.1 Accept: application/json 发生错误时,不要返回 200 状态码 有一种不恰当的做法是,即使发生错误,也返回200状态码,把错误信息放在数据体里面
GET /articles/published 查询字符串的写法明显更好。 GET /articles?...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...一般来说,API 不会向用户透露服务器的详细信息,所以只要两个状态码就够了。 500 Internal Server Error:客户端请求有效,服务器处理时发生了意外。...GET /orders/2 HTTP/1.1 Accept: application/json 3.2 发生错误时,不要返回 200 状态码 有一种不恰当的做法是,即使发生错误,也返回200状态码,把错误信息放在数据体里面
● URL内参数中包含可变字段,如/orders/orderid,orderid为URL内参数,需要对应填值,具体参考下文的接口列表。...● 400,多数情况下是指请求参数错误或请求不合法。 ● 401,sign值计算错误,或App已被删除。 ● 404,设备或对应的App信息不存在,将返回NotFound错误。...【REST API示例】 1.订单列表 ● 描述:获取所有订单ID列表 ● 路径:/orders ● 方法:GET ● 参数:page,count curl-X GET https://test.cn/...api/server/ordersH"Timestamp:1529051966" 2.订单详细信息查询 ● 描述:获取指定设备详细信息 ● 路径:/orders/orderid ● 方法:GET● 参数...,或禁用/恢复设备 ● 路径:/orders/orderid ● 方法:PUT ● 参数:无 curl-X GET https://test.cn/api/server/orders/1234562342
GET /articles/published 查询字符串的写法明显更好。 GET /articles?...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...一般来说,API 不会向用户透露服务器的详细信息,所以只要两个状态码就够了。 500 Internal Server Error:客户端请求有效,服务器处理时发生了意外。...GET /orders/2 HTTP/1.1 Accept: application/json 3.2 发生错误时,不要返回 200 状态码 有一种不恰当的做法是,即使发生错误,也返回200状态码,