<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HTTP API on PlumePHP</title><link>https://plumephp.com/tags/http-api/</link><description>Recent content in HTTP API on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 05 Sep 2024 17:19:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/http-api/index.xml" rel="self" type="application/rss+xml"/><item><title>Go 部分更新 API 入门：区分未提交、空值和清空字段</title><link>https://plumephp.com/go-json-patch-style-update-2024/</link><pubDate>Thu, 05 Sep 2024 17:19:00 +0800</pubDate><guid>https://plumephp.com/go-json-patch-style-update-2024/</guid><description>&lt;p&gt;创建接口比较简单，用户提交什么就创建什么。更新接口尤其是部分更新，会遇到一个麻烦问题：字段没提交、提交空字符串、提交 &lt;code&gt;null&lt;/code&gt;，这三件事含义可能不同。比如昵称没提交表示不改，提交空字符串表示设置为空字符串，提交 &lt;code&gt;null&lt;/code&gt; 表示清空昵称。&lt;/p&gt;</description></item><item><title>Go 分页 API 入门：limit、cursor 和稳定排序</title><link>https://plumephp.com/go-pagination-api-2024/</link><pubDate>Thu, 27 Jun 2024 13:25:00 +0800</pubDate><guid>https://plumephp.com/go-pagination-api-2024/</guid><description>&lt;p&gt;列表接口一开始很容易写成“查全部”。数据少时没问题，数据变多后就会慢、占内存，还会让前端一次拿到太多无用数据。分页是 API 的基本功。Go 写分页不难，难的是把参数校验、排序稳定性和响应结构设计清楚。&lt;/p&gt;</description></item><item><title>Go 结构化错误入门：错误码、包装和 HTTP 映射</title><link>https://plumephp.com/go-structured-error-types-2024/</link><pubDate>Mon, 29 Apr 2024 08:39:00 +0800</pubDate><guid>https://plumephp.com/go-structured-error-types-2024/</guid><description>&lt;p&gt;Go 的错误处理很直接：函数返回 &lt;code&gt;error&lt;/code&gt;，调用方检查它。但项目变大后，如果所有错误都只是 &lt;code&gt;fmt.Errorf(&amp;quot;bad request&amp;quot;)&lt;/code&gt;，HTTP 层就很难判断该返回 400、404 还是 500；日志里也很难分清用户错误和系统错误。结构化错误的目标不是复杂化，而是让错误携带稳定语义。&lt;/p&gt;</description></item></channel></rss>