从...失败的无效字符'G'解析错误代码400解析正文,以寻找对象的开头 [英] weaviate error code 400 parsing body from ... failed invalid character 'G' looking for beginning of object
问题描述
我正在尝试按照 https:/上的步骤进行操作/www.semi.technology/documentation/weaviate/current/client-libs/python.html 并最终遇到与以下问题相同的问题:
I am trying to follow the steps at https://www.semi.technology/documentation/weaviate/current/client-libs/python.html and end up with the same problem as in:
从\解析身体"\"失败,因为无效字符"G"正在寻找对象键字符串的开头
由于另一个问题从未得到答案,我想在微妙的环境中更详细地询问.
Since the other question never got an answer i am trying to ask with more detail in the weaviate context.
我尝试了以下python-unit测试:
I tried the following python-unit test:
'''
Created on 24.07.2020
@author: wf
'''
import unittest
import weaviate
class TestWeaviate(unittest.TestCase):
# https://www.semi.technology/documentation/weaviate/current/client-libs/python.html
def setUp(self):
pass
def tearDown(self):
pass
def testWeaviate(self):
''' see https://www.semi.technology/documentation/weaviate/current/client-libs/python.html '''
client = weaviate.Client("http://localhost:8080")
try:
client.create_schema("https://raw.githubusercontent.com/semi-technologies/weaviate-python-client/master/documentation/getting_started/people_schema.json")
except:
pass
entries=[
[ {"name": "John von Neumann"}, "Person", "b36268d4-a6b5-5274-985f-45f13ce0c642"],
[ {"name": "Alan Turing"}, "Person", "1c9cd584-88fe-5010-83d0-017cb3fcb446"],
[ {"name": "Legends"}, "Group", "2db436b5-0557-5016-9c5f-531412adf9c6" ]
]
for entry in entries:
dict,type,uid=entry
try:
client.create(dict,type,uid)
except weaviate.exceptions.ThingAlreadyExistsException as taee:
print ("%s already created" % dict['name'])
pass
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
结果:
John von Neumann already created
Alan Turing already created
Legends already created
----------------------------------------------------------------------
Ran 1 test in 0.370s
OK
(重新运行后)
然后我尝试:
curl http://localhost:8080/v1/graphql -X POST -H 'Content-type: application/json' -d '
{
Get {
Things {
Group {
name
uuid
Members {
... on Person {
name
uuid
}
}
}
}
}
}'
获取错误: {代码":400,消息":从"中解析出身体".失败,因为无效字符'G'正在寻找对象关键字字符串的开头"}
getting the error: {"code":400,"message":"parsing body body from "" failed, because invalid character 'G' looking for beginning of object key string"}
推荐答案
该请求需要一个JSON对象(由于Content-type: application/json
),可以通过设置-d '{ "query": "{ # GRAPHQL QUERY }" }'
(
The request expects a JSON object (because of Content-type: application/json
) this can be added by setting -d '{ "query": "{ # GRAPHQL QUERY }" }'
(docs).
因此,在您的情况下,要发送的JSON对象是:
So in your case, the JSON object to send is:
{
"query":
"{
Get {
Things {
Group {
name uuid Members { ... on Person { name uuid } }
}
}
}
}"
}
或完整的请求:
$ curl http://localhost:8080/v1/graphql -X POST -H 'Content-type: application/json' -d '{
"query": "{ Get { Things { Group { name uuid Members { ... on Person { name uuid } } } } } }"
}'
结果:
{"data":{"Get":{"Things":{"Group":[{"Members":null,"name":"Legends","uuid":"2db436b5-0557-5016-9c5f-531412adf9c6"}]}}},"errors":null}
这篇关于从...失败的无效字符'G'解析错误代码400解析正文,以寻找对象的开头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!