在我的Sapper应用中,我想使用其SDK('prismic-javascript)从Prismic API进行预加载
我按照文档进行了预加载。但是文档仅通过this.fetch函数提供预加载。我想使用Prismic SDK连接到我的Prismic存储库。但这根本不给我任何数据。
我还尝试了使用JSONplaceholder的this.fetch方法。那很好。甚至要求“老方法”使用Prismic-SDK也不起作用:
<script context="module">
import Prismic from "prismic-javascript";
const apiEndpoint = "https://my-repository.cdn.prismic.io/api/v2";
export async function preload(page, session) {
const api = await Prismic.getApi(apiEndpoint, { req });
const data = await api.getSingle("portfolio");
return { data };
}
</script>
这就是我的代码:
string myString = "<at>onePossibleName</at> some question here regarding <at>disPossibleName</at>"
int sFrom = myString.IndexOf("<at>") + "<at>".Length;
int sTo = myString.IndexOf("</at>");
string myEditedString = myString.SubString(sFrom, sFrom - sTo);
Console.WriteLine(myEditedString);
//output now is: some question here regarding <at>disPossibleName</at>
此代码应使用API数据填充数据变量。但事实并非如此。有没有人可以帮助我呢?谢谢!
答案 0 :(得分:1)
我检查了棱柱形文档,结果发现getApi
方法要求您在第二个参数中提供req
。
Req
是nodejs服务器调用中的request
参数。您无法通过preload
方法访问它。
您需要做的是创建一个server route,从中您可以使用Prismic API。
<script context="module">
export async function preload(page, session) {
const data = await this.fetch('/prismic/portfolio');
return { data };
}
</script>
使用prismic/[slug].js
服务器路由
import Prismic from "prismic-javascript";
const apiEndpoint = "https://my-repository.cdn.prismic.io/api/v2";
export async function get(req, res, next) {
const { slug } = req.params;
const api = await Prismic.getApi(apiEndpoint, { req });
const data = await api.getSingle(slug);
if (article !== null) {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(data));
} else {
next();
}
}
答案 1 :(得分:0)
如果您不需要Prismic的req对象,则可以使用此方法:
import Prismic from "prismic-javascript";
const apiEndpoint = "https://my-repository.cdn.prismic.io/api/v2";
export async function preload({ params, query }) {
const api = await Prismic.getApi(apiEndpoint);
const data = await api.getSingle("portfolio");
return { data };
}
</script>