支持hapi中的其他mime类型

时间:2016-01-06 18:36:59

标签: mime-types content-type hapijs graphql

我正在开发一个在hapi之上提供的graphql + relay应用程序,并希望支持使用UPDATE (SELECT A.VIN FROM table1 A INNER JOIN table2 B ON A.OBJ = B.POID WHERE B."device ID" = 'TCAXLcKkt3' ) t SET T.VIN = '5TDKK3DC6BS018229' mime类型对graphql端点的请求。

在这里,您可以看到我将POST请求发送到graphql端点。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var user = PFUser.currentUser()?.username!

    let bucketCellObj = tableView.dequeueReusableCellWithIdentifier("bucket", forIndexPath: indexPath) as! BucketTableViewCell

    var query = PFQuery(className: "Bucket")
    query.whereKey("creator", equalTo: user!)
    query.findObjectsInBackgroundWithBlock { (PFObject, error) -> Void in
        if error == nil {
            bucketCellObj.bucketname.numberOfLines = 0
            bucketCellObj.username.text = self.bucketsArray[indexPath.row]["creator"] as? String
            bucketCellObj.bucketname.text = self.bucketsArray[indexPath.row]["name"] as? String
            bucketCellObj.selectionStyle = .None
        } else {
            print("ERROR")
        }
    }
    return bucketCellObj
}

我的hapi服务器选项中没有任何地方可以找到mime类型的明确配置,而不是一些简洁的文档here

我已按照以下设置选项mime配置,将选项传递到服务器实例,但我仍然看到application/graphql错误。

~> 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"}

这里有没有其他人有hapi这种经验?

1 个答案:

答案 0 :(得分:2)

每个路由都有allow配置选项,该选项采用application/graphql属性,让hapi知道哪些mimetypes允许该路由。如果您将其设置为parse,将false选项设置为server.route({ method: ['POST', 'PUT'], path: '/graphql', config: { payload: { parse: false, allow: 'application/graphql' } }, handler: function(request, reply) { reply(request.payload) } }) ,则您的请求将有效。

不幸的是,您必须自己解析有效负载。

以下是一个示例路线:

VideoRepository