[{"data":1,"prerenderedAt":839},["ShallowReactive",2],{"navigation-zh":3,"navigation-v1":81,"\u002Fzh\u002Fguide\u002Fresponses":146,"\u002Fzh\u002Fguide\u002Fresponses-surround":539,"\u002Fzh\u002Fguide\u002Fresponses-og":544},[4,55,77],{"title":5,"path":6,"stem":7,"children":8},"指南","\u002Fzh\u002Fguide","zh\u002F1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43,47,51],{"title":10,"path":6,"stem":7},"介绍",{"title":12,"path":13,"stem":14},"序言","\u002Fzh\u002Fguide\u002Fprologue","zh\u002F1.guide\u002F00.prologue",{"title":16,"path":17,"stem":18},"快速上手","\u002Fzh\u002Fguide\u002Fgetting-started","zh\u002F1.guide\u002F02.getting-started",{"title":20,"path":21,"stem":22},"模型","\u002Fzh\u002Fguide\u002Fmodels","zh\u002F1.guide\u002F03.models",{"title":24,"path":25,"stem":26},"关联","\u002Fzh\u002Fguide\u002Frelationships","zh\u002F1.guide\u002F04.relationships",{"title":28,"path":29,"stem":30},"钩子","\u002Fzh\u002Fguide\u002Fhooks","zh\u002F1.guide\u002F05.hooks",{"title":32,"path":33,"stem":34},"搜索","\u002Fzh\u002Fguide\u002Fsearch","zh\u002F1.guide\u002F06.search",{"title":36,"path":37,"stem":38},"批量操作","\u002Fzh\u002Fguide\u002Fbatch-operations","zh\u002F1.guide\u002F07.batch-operations",{"title":40,"path":41,"stem":42},"查询参数","\u002Fzh\u002Fguide\u002Fquery-parameters","zh\u002F1.guide\u002F08.query-parameters",{"title":44,"path":45,"stem":46},"安全","\u002Fzh\u002Fguide\u002Fsecurity","zh\u002F1.guide\u002F09.security",{"title":48,"path":49,"stem":50},"响应","\u002Fzh\u002Fguide\u002Fresponses","zh\u002F1.guide\u002F10.responses",{"title":52,"path":53,"stem":54},"规范","\u002Fzh\u002Fguide\u002Fspecifications","zh\u002F1.guide\u002F11.specifications",{"title":56,"path":57,"stem":58,"children":59},"TypeScript SDK","\u002Fzh\u002Ftypescript-sdk","zh\u002F2.typescript-sdk\u002F01.index",[60,61,64,68,71,74],{"title":10,"path":57,"stem":58},{"title":16,"path":62,"stem":63},"\u002Fzh\u002Ftypescript-sdk\u002Fgetting-started","zh\u002F2.typescript-sdk\u002F02.getting-started",{"title":65,"path":66,"stem":67},"配置","\u002Fzh\u002Ftypescript-sdk\u002Fconfiguration","zh\u002F2.typescript-sdk\u002F03.configuration",{"title":20,"path":69,"stem":70},"\u002Fzh\u002Ftypescript-sdk\u002Fmodels","zh\u002F2.typescript-sdk\u002F04.models",{"title":24,"path":72,"stem":73},"\u002Fzh\u002Ftypescript-sdk\u002Frelationships","zh\u002F2.typescript-sdk\u002F05.relationships",{"title":40,"path":75,"stem":76},"\u002Fzh\u002Ftypescript-sdk\u002Fquery-parameters","zh\u002F2.typescript-sdk\u002F06.query-parameters",{"title":78,"path":79,"stem":80},"视频教程","\u002Fzh\u002Fscreencasts","zh\u002Fscreencasts",[82,125],{"title":83,"path":84,"stem":85,"children":86},"Guide","\u002Fv1.x\u002Fguide","v1.x\u002F1.guide\u002F01.index",[87,89,93,97,101,105,109,113,117,121],{"title":88,"path":84,"stem":85},"Introduction",{"title":90,"path":91,"stem":92},"Getting Started","\u002Fv1.x\u002Fguide\u002Fgetting-started","v1.x\u002F1.guide\u002F02.getting-started",{"title":94,"path":95,"stem":96},"Models","\u002Fv1.x\u002Fguide\u002Fmodels","v1.x\u002F1.guide\u002F03.models",{"title":98,"path":99,"stem":100},"Relationships","\u002Fv1.x\u002Fguide\u002Frelationships","v1.x\u002F1.guide\u002F04.relationships",{"title":102,"path":103,"stem":104},"Hooks","\u002Fv1.x\u002Fguide\u002Fhooks","v1.x\u002F1.guide\u002F05.hooks",{"title":106,"path":107,"stem":108},"Search","\u002Fv1.x\u002Fguide\u002Fsearch","v1.x\u002F1.guide\u002F06.search",{"title":110,"path":111,"stem":112},"Batch Operations","\u002Fv1.x\u002Fguide\u002Fbatch-operations","v1.x\u002F1.guide\u002F07.batch-operations",{"title":114,"path":115,"stem":116},"Query Parameters","\u002Fv1.x\u002Fguide\u002Fquery-parameters","v1.x\u002F1.guide\u002F08.query-parameters",{"title":118,"path":119,"stem":120},"Security","\u002Fv1.x\u002Fguide\u002Fsecurity","v1.x\u002F1.guide\u002F09.security",{"title":122,"path":123,"stem":124},"Responses","\u002Fv1.x\u002Fguide\u002Fresponses","v1.x\u002F1.guide\u002F10.responses",{"title":56,"path":126,"stem":127,"children":128},"\u002Fv1.x\u002Ftypescript-sdk","v1.x\u002F2.typescript-sdk\u002F01.index",[129,130,133,137,140,143],{"title":88,"path":126,"stem":127},{"title":90,"path":131,"stem":132},"\u002Fv1.x\u002Ftypescript-sdk\u002Fgetting-started","v1.x\u002F2.typescript-sdk\u002F02.getting-started",{"title":134,"path":135,"stem":136},"Configuration","\u002Fv1.x\u002Ftypescript-sdk\u002Fconfiguration","v1.x\u002F2.typescript-sdk\u002F03.configuration",{"title":94,"path":138,"stem":139},"\u002Fv1.x\u002Ftypescript-sdk\u002Fmodels","v1.x\u002F2.typescript-sdk\u002F04.models",{"title":98,"path":141,"stem":142},"\u002Fv1.x\u002Ftypescript-sdk\u002Frelationships","v1.x\u002F2.typescript-sdk\u002F05.relationships",{"title":114,"path":144,"stem":145},"\u002Fv1.x\u002Ftypescript-sdk\u002Fquery-parameters","v1.x\u002F2.typescript-sdk\u002F06.query-parameters",{"id":147,"title":48,"body":148,"description":533,"extension":534,"links":535,"meta":536,"navigation":225,"path":49,"seo":537,"stem":50,"__hash__":538},"docs_zh\u002Fzh\u002F1.guide\u002F10.responses.md",{"type":149,"value":150,"toc":531},"minimark",[151,163,175,188,198,509,527],[152,153,154,155,162],"p",{},"Orion 使用 ",[156,157,161],"a",{"href":158,"rel":159},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Feloquent-resources",[160],"nofollow","API 资源","作为 Eloquent 模型与最终返回给 API 客户端的响应之间的转换层。",[152,164,165,166,170,171,174],{},"为了让这些类能够被自动解析，它们应遵循如下命名模式：",[167,168,169],"code",{},"App\\Http\\Resources\\\u003Cmodel>Resource"," 或 ",[167,172,173],{},"App\\Http\\Resources\\\u003Cmodel>CollectionResource","。",[152,176,177,178,181,182,170,185,174],{},"例如，如果你有一个 ",[167,179,180],{},"App\\Models\\Message"," 模型，对应的资源类就是 ",[167,183,184],{},"App\\Http\\Resources\\MessageResource",[167,186,187],{},"App\\Http\\Resources\\MessageCollectionResource",[152,189,190,191,170,194,197],{},"如果应用中的资源类名不遵循该命名约定，或者你只是想更加明确，可以在控制器上将 ",[167,192,193],{},"protected $resource",[167,195,196],{},"protected $collectionResource"," 属性设置为资源类的完全限定类名。",[199,200,205],"pre",{"className":201,"code":202,"language":203,"meta":204,"style":204},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Message;\nuse App\\Http\\Resources\\CustomMessageResource;\nuse App\\Http\\Resources\\CustomMessageCollectionResource;\n\nclass MessagesController extends ApiController\n{\n    \u002F**\n     * @var string $model\n     *\u002F\n    protected $model = Message::class;\n\n    \u002F**\n     * @var string $resource\n     *\u002F\n    protected $resource = CustomMessageResource::class;\n\n    \u002F**\n     * @var string $collectionResource\n     *\u002F\n    protected $collectionResource = CustomMessageCollectionResource::class;\n}\n","php","",[167,206,207,220,227,257,262,281,304,326,331,347,353,360,376,382,407,412,417,429,434,455,460,465,477,482,503],{"__ignoreMap":204},[208,209,212,216],"span",{"class":210,"line":211},"line",1,[208,213,215],{"class":214},"sMK4o","\u003C?",[208,217,219],{"class":218},"sTEyZ","php\n",[208,221,223],{"class":210,"line":222},2,[208,224,226],{"emptyLinePlaceholder":225},true,"\n",[208,228,230,234,238,241,244,246,249,251,254],{"class":210,"line":229},3,[208,231,233],{"class":232},"sbssI","namespace",[208,235,237],{"class":236},"sBMFI"," App",[208,239,240],{"class":214},"\\",[208,242,243],{"class":236},"Http",[208,245,240],{"class":214},[208,247,248],{"class":236},"Controllers",[208,250,240],{"class":214},[208,252,253],{"class":236},"Api",[208,255,256],{"class":214},";\n",[208,258,260],{"class":210,"line":259},4,[208,261,226],{"emptyLinePlaceholder":225},[208,263,265,268,270,272,274,276,279],{"class":210,"line":264},5,[208,266,267],{"class":232},"use",[208,269,237],{"class":218},[208,271,240],{"class":214},[208,273,94],{"class":218},[208,275,240],{"class":214},[208,277,278],{"class":218},"Message",[208,280,256],{"class":214},[208,282,284,286,288,290,292,294,297,299,302],{"class":210,"line":283},6,[208,285,267],{"class":232},[208,287,237],{"class":218},[208,289,240],{"class":214},[208,291,243],{"class":218},[208,293,240],{"class":214},[208,295,296],{"class":218},"Resources",[208,298,240],{"class":214},[208,300,301],{"class":218},"CustomMessageResource",[208,303,256],{"class":214},[208,305,307,309,311,313,315,317,319,321,324],{"class":210,"line":306},7,[208,308,267],{"class":232},[208,310,237],{"class":218},[208,312,240],{"class":214},[208,314,243],{"class":218},[208,316,240],{"class":214},[208,318,296],{"class":218},[208,320,240],{"class":214},[208,322,323],{"class":218},"CustomMessageCollectionResource",[208,325,256],{"class":214},[208,327,329],{"class":210,"line":328},8,[208,330,226],{"emptyLinePlaceholder":225},[208,332,334,338,341,344],{"class":210,"line":333},9,[208,335,337],{"class":336},"spNyl","class",[208,339,340],{"class":236}," MessagesController",[208,342,343],{"class":336}," extends",[208,345,346],{"class":236}," ApiController\n",[208,348,350],{"class":210,"line":349},10,[208,351,352],{"class":214},"{\n",[208,354,356],{"class":210,"line":355},11,[208,357,359],{"class":358},"sHwdD","    \u002F**\n",[208,361,363,366,370,373],{"class":210,"line":362},12,[208,364,365],{"class":358},"     * ",[208,367,369],{"class":368},"svl4J","@var",[208,371,372],{"class":368}," string",[208,374,375],{"class":358}," $model\n",[208,377,379],{"class":210,"line":378},13,[208,380,381],{"class":358},"     *\u002F\n",[208,383,385,388,391,394,397,400,403,405],{"class":210,"line":384},14,[208,386,387],{"class":336},"    protected",[208,389,390],{"class":214}," $",[208,392,393],{"class":218},"model ",[208,395,396],{"class":214},"=",[208,398,399],{"class":236}," Message",[208,401,402],{"class":214},"::",[208,404,337],{"class":232},[208,406,256],{"class":214},[208,408,410],{"class":210,"line":409},15,[208,411,226],{"emptyLinePlaceholder":225},[208,413,415],{"class":210,"line":414},16,[208,416,359],{"class":358},[208,418,420,422,424,426],{"class":210,"line":419},17,[208,421,365],{"class":358},[208,423,369],{"class":368},[208,425,372],{"class":368},[208,427,428],{"class":358}," $resource\n",[208,430,432],{"class":210,"line":431},18,[208,433,381],{"class":358},[208,435,437,439,441,444,446,449,451,453],{"class":210,"line":436},19,[208,438,387],{"class":336},[208,440,390],{"class":214},[208,442,443],{"class":218},"resource ",[208,445,396],{"class":214},[208,447,448],{"class":236}," CustomMessageResource",[208,450,402],{"class":214},[208,452,337],{"class":232},[208,454,256],{"class":214},[208,456,458],{"class":210,"line":457},20,[208,459,226],{"emptyLinePlaceholder":225},[208,461,463],{"class":210,"line":462},21,[208,464,359],{"class":358},[208,466,468,470,472,474],{"class":210,"line":467},22,[208,469,365],{"class":358},[208,471,369],{"class":368},[208,473,372],{"class":368},[208,475,476],{"class":358}," $collectionResource\n",[208,478,480],{"class":210,"line":479},23,[208,481,381],{"class":358},[208,483,485,487,489,492,494,497,499,501],{"class":210,"line":484},24,[208,486,387],{"class":336},[208,488,390],{"class":214},[208,490,491],{"class":218},"collectionResource ",[208,493,396],{"class":214},[208,495,496],{"class":236}," CustomMessageCollectionResource",[208,498,402],{"class":214},[208,500,337],{"class":232},[208,502,256],{"class":214},[208,504,506],{"class":210,"line":505},25,[208,507,508],{"class":214},"}\n",[510,511,513],"note",{"icon":512},"i-lucide-lightbulb",[152,514,515,518,519,522,523,526],{},[167,516,517],{},"Orion\\Http\\Resources\\Resource"," 和 ",[167,520,521],{},"Orion\\Http\\Resources\\CollectionResource"," 类上都提供了一个便捷的 ",[167,524,525],{},"toArrayWithMerge"," 方法——不妨去看一看。",[528,529,530],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .svl4J, html code.shiki .svl4J{--shiki-light:#F76D47;--shiki-light-font-style:italic;--shiki-default:#F78C6C;--shiki-default-font-style:italic;--shiki-dark:#F78C6C;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":204,"searchDepth":211,"depth":222,"links":532},[],"了解模型如何被转换为 JSON 响应。","md",null,{},{"title":48,"description":533},"E-AGoOtTtgfTQylpjfydONfVL_1EPoJhUZiTixLg1ww",[540,542],{"title":44,"path":45,"stem":46,"description":541,"children":-1},"了解认证、授权与验证。",{"title":52,"path":53,"stem":54,"description":543,"children":-1},"了解如何自动生成 OpenAPI 规范。",{"id":545,"title":122,"body":546,"description":833,"extension":534,"links":535,"meta":834,"navigation":225,"path":835,"seo":836,"stem":837,"__hash__":838},"docs_en\u002F1.guide\u002F10.responses.md",{"type":149,"value":547,"toc":831},[548,556,565,575,583,815,829],[152,549,550,551,555],{},"Orion uses ",[156,552,554],{"href":158,"rel":553},[160],"API Resources"," as a transformation layer between Eloquent models and actual responses that are returned to your API clients.",[152,557,558,559,561,562,564],{},"To allow these classes to be resolved automatically, they should follow the pattern: ",[167,560,169],{}," or ",[167,563,173],{},".",[152,566,567,568,570,571,561,573,564],{},"For example, if you have an ",[167,569,180],{}," model, the related resource class would be ",[167,572,184],{},[167,574,187],{},[152,576,577,578,561,580,582],{},"If resource class names in your app do not follow this naming convention or if you just would like to be more explicit, set ",[167,579,193],{},[167,581,196],{}," property on controller to a fully-qualified resource class name.",[199,584,585],{"className":201,"code":202,"language":203,"meta":204,"style":204},[167,586,587,593,597,617,621,637,657,677,681,691,695,699,709,713,731,735,739,749,753,771,775,779,789,793,811],{"__ignoreMap":204},[208,588,589,591],{"class":210,"line":211},[208,590,215],{"class":214},[208,592,219],{"class":218},[208,594,595],{"class":210,"line":222},[208,596,226],{"emptyLinePlaceholder":225},[208,598,599,601,603,605,607,609,611,613,615],{"class":210,"line":229},[208,600,233],{"class":232},[208,602,237],{"class":236},[208,604,240],{"class":214},[208,606,243],{"class":236},[208,608,240],{"class":214},[208,610,248],{"class":236},[208,612,240],{"class":214},[208,614,253],{"class":236},[208,616,256],{"class":214},[208,618,619],{"class":210,"line":259},[208,620,226],{"emptyLinePlaceholder":225},[208,622,623,625,627,629,631,633,635],{"class":210,"line":264},[208,624,267],{"class":232},[208,626,237],{"class":218},[208,628,240],{"class":214},[208,630,94],{"class":218},[208,632,240],{"class":214},[208,634,278],{"class":218},[208,636,256],{"class":214},[208,638,639,641,643,645,647,649,651,653,655],{"class":210,"line":283},[208,640,267],{"class":232},[208,642,237],{"class":218},[208,644,240],{"class":214},[208,646,243],{"class":218},[208,648,240],{"class":214},[208,650,296],{"class":218},[208,652,240],{"class":214},[208,654,301],{"class":218},[208,656,256],{"class":214},[208,658,659,661,663,665,667,669,671,673,675],{"class":210,"line":306},[208,660,267],{"class":232},[208,662,237],{"class":218},[208,664,240],{"class":214},[208,666,243],{"class":218},[208,668,240],{"class":214},[208,670,296],{"class":218},[208,672,240],{"class":214},[208,674,323],{"class":218},[208,676,256],{"class":214},[208,678,679],{"class":210,"line":328},[208,680,226],{"emptyLinePlaceholder":225},[208,682,683,685,687,689],{"class":210,"line":333},[208,684,337],{"class":336},[208,686,340],{"class":236},[208,688,343],{"class":336},[208,690,346],{"class":236},[208,692,693],{"class":210,"line":349},[208,694,352],{"class":214},[208,696,697],{"class":210,"line":355},[208,698,359],{"class":358},[208,700,701,703,705,707],{"class":210,"line":362},[208,702,365],{"class":358},[208,704,369],{"class":368},[208,706,372],{"class":368},[208,708,375],{"class":358},[208,710,711],{"class":210,"line":378},[208,712,381],{"class":358},[208,714,715,717,719,721,723,725,727,729],{"class":210,"line":384},[208,716,387],{"class":336},[208,718,390],{"class":214},[208,720,393],{"class":218},[208,722,396],{"class":214},[208,724,399],{"class":236},[208,726,402],{"class":214},[208,728,337],{"class":232},[208,730,256],{"class":214},[208,732,733],{"class":210,"line":409},[208,734,226],{"emptyLinePlaceholder":225},[208,736,737],{"class":210,"line":414},[208,738,359],{"class":358},[208,740,741,743,745,747],{"class":210,"line":419},[208,742,365],{"class":358},[208,744,369],{"class":368},[208,746,372],{"class":368},[208,748,428],{"class":358},[208,750,751],{"class":210,"line":431},[208,752,381],{"class":358},[208,754,755,757,759,761,763,765,767,769],{"class":210,"line":436},[208,756,387],{"class":336},[208,758,390],{"class":214},[208,760,443],{"class":218},[208,762,396],{"class":214},[208,764,448],{"class":236},[208,766,402],{"class":214},[208,768,337],{"class":232},[208,770,256],{"class":214},[208,772,773],{"class":210,"line":457},[208,774,226],{"emptyLinePlaceholder":225},[208,776,777],{"class":210,"line":462},[208,778,359],{"class":358},[208,780,781,783,785,787],{"class":210,"line":467},[208,782,365],{"class":358},[208,784,369],{"class":368},[208,786,372],{"class":368},[208,788,476],{"class":358},[208,790,791],{"class":210,"line":479},[208,792,381],{"class":358},[208,794,795,797,799,801,803,805,807,809],{"class":210,"line":484},[208,796,387],{"class":336},[208,798,390],{"class":214},[208,800,491],{"class":218},[208,802,396],{"class":214},[208,804,496],{"class":236},[208,806,402],{"class":214},[208,808,337],{"class":232},[208,810,256],{"class":214},[208,812,813],{"class":210,"line":505},[208,814,508],{"class":214},[510,816,817],{"icon":512},[152,818,819,820,822,823,825,826,828],{},"There is a handy ",[167,821,525],{}," method available on both ",[167,824,517],{}," and ",[167,827,521],{}," classes - take a look there 😉",[528,830,530],{},{"title":204,"searchDepth":211,"depth":222,"links":832},[],"Learn how models are transformed into JSON responses.",{},"\u002Fguide\u002Fresponses",{"title":122,"description":833},"1.guide\u002F10.responses","7PQ2D2FbZcb2loyyQ4Ue_Zrm3zVDij8eoBNZymAs1Bg",1784394466852]