文章发布与读取
使用当前SDK读取已发布文章,区分404、故障与草稿。
公开读取契约
ArticleSDK.list按language、页码、分类和关键词读取已发布列表。getBySlug必须配合语言;slug只在语言内唯一。getById/getBySlug仅HTTP404返回null,网络/5xx/无效响应抛错。
TypeScript
import type { Shell } from '@mosaic-base/shell';
import type { ArticleSDK, SiteSDK, I18nSDK } from '@mosaic-base/client-sdk';
import type { AuthClient, ServerAuthClient } from '@mosaic-base/auth-sdk';
// Declare once in your application's type contract, never import SDK implementations.
declare module '@mosaic-base/shell/contracts' {
interface SdkRegistry {
'site.config': Pick<SiteSDK, 'getConfig'>;
'content.articles': Pick<ArticleSDK, 'list' | 'getBySlug' | 'getPreview' | 'search'>;
'i18n.messages': Pick<I18nSDK, 'load' | 't' | 'clearCache' | 'refresh'>;
'auth.client': AuthClient | ServerAuthClient;
}
}
export async function readArticle(shell: Shell, slug: string) {
const articles = await shell.getSdk('content.articles');
const article = await articles.getBySlug(slug, 'en-US');
return article && { title: article.title, html: article.content, translations: article.translations };
}
// Null means missing/unpublished; service failures throw and need retry feedback.安全编辑和授权预览
后台保存追加内容快照,以编辑修订检查冲突;发布必须指定确认过的版本。旧页面收到冲突会保留输入,比较后明确选择是否加载服务器版本,不能自动覆盖他人的修改。
授权预览绑定文章、快照和语言,后续保存不会改变其正文。历史快照清理后提示重新生成;凭据不包含管理员会话。公开SDK仍只返回已发布版本。
发布、译文与缓存
草稿与公开版本隔离。保存下一版草稿不会替换已发布内容,发布才更新,撤下后匿名不可读。translations只列已发布译文及各自slug;文章详情缺译文不回退到另一种语言。
文章SDK仅合并进行中的相同读取,没有已完成结果的TTL缓存。列表失败不会被转换为空列表。
实时 SDK 结果
本区域由服务器使用实际公开SDK读取当前语言最近的已发布文章,不读取草稿。