【发布时间】:2016-04-10 23:12:54
【问题描述】:
我正在开发一个基于 hapi 的 graphql + relay 应用程序,并希望支持对带有 application/graphql mime 类型的 graphql 端点的请求。
在这里你可以看到我向 graphql 端点发送 POST 请求。
~> curl -X POST --header "Content-Type:application/json" -d '{"query":"{content(id:\"13381672\"){title,id}}"}' http://127.0.0.1:8000/graphql
{"data":{"content":{"title":"Example Title","id":"13381672"}}}
~> curl -X POST --header "Content-Type:application/graphql" -d '{"query":"{content(id:\"13381672\"){title,id}}"}' http://127.0.0.1:8000/graphql
{"statusCode":415,"error":"Unsupported Media Type"}
除了一些简洁的文档here之外,我没有看到在我的 hapi 服务器选项中有任何明确的 mime 类型配置的地方。
我已经按照以下设置了一个选项 mime 配置,将选项传递到服务器实例化中,但我仍然看到 "Unsupported Media Type" 错误。
options.mime = {
override: {
'application/graphql': {
charset: 'UTF-8',
compressible: true,
type: 'application/graphql'
}
}
};
这里有没有人有这种hapi经验?
【问题讨论】:
-
不确定这是否有用,但在此示例中 (github.com/SimonDegraeve/hapi-graphql/blob/master/src/index.js),作者创建了一个新的处理程序来检查 mime 类型。
-
当然......我实际上已经为我的 hapi 服务器移植(修改)了这段代码,并且它在大多数情况下都可以正常工作。我们在这里 (github.com/SimonDegraeve/hapi-graphql/blob/master/src/…) 看到作者正在检查 mime 类型(我也是如此)。但我遇到的问题是我看不到在哪里/如何注册这种额外的非标准 mime 类型。我的带有
application/graphql类型的 cURL(上图)甚至无法通过parsePayload()函数。早在此之前,它就被抛出 415 错误。 -
您还有这个问题吗?那应该可以。
-
我没有任何直接问题,因为我了解到我的中继前端正在发出标准 mime 类型的请求。在某些时候,我仍然想教 hapi 接受非标准类型,但这对我来说不是问题,现在。
标签: mime-types content-type hapijs graphql